~ruther/qmk_firmware

fe18df9d4186c7f2c97a2bfccf3cc0e11615c728 — Ryan 2 years ago 3de296f
Normalise Dynamic Macro keycodes (#18939)

* `DYN_REC_START1` -> `QK_DYNAMIC_MACRO_RECORD_START_1`

* `DYN_REC_START2` -> `QK_DYNAMIC_MACRO_RECORD_START_2`

* `DYN_MACRO_PLAY1` -> `QK_DYNAMIC_MACRO_PLAY_1`

* `DYN_MACRO_PLAY2` -> `QK_DYNAMIC_MACRO_PLAY_2`

* `DYN_REC_STOP` -> `QK_DYNAMIC_MACRO_RECORD_STOP`

* Update docs
44 files changed, 216 insertions(+), 210 deletions(-)

M docs/feature_dynamic_macros.md
M docs/keycodes.md
M keyboards/biacco42/ergo42/keymaps/hdbx/keymap.c
M keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c
M keyboards/dz60/keymaps/iso_de_root/keymap.c
M keyboards/dztech/dz65rgb/keymaps/drootz/keymap.c
M keyboards/dztech/dz65rgb/keymaps/yuannan/keymap.c
M keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c
M keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c
M keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c
M keyboards/gh60/satan/keymaps/addcninblue/keymap.c
M keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c
M keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c
M keyboards/hhkb/ansi/keymaps/cinaeco/keymap.c
M keyboards/hhkb/ansi/keymaps/mjt/keymap.c
M keyboards/hhkb/ansi/keymaps/shela/keymap.c
M keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c
M keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c
M keyboards/jd45/keymaps/mjt6u/keymap.c
M keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
M keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c
M keyboards/keebio/levinson/keymaps/jyh2/keymap.c
M keyboards/m10a/keymaps/gam3cat/keymap.c
M keyboards/mt/split75/keymaps/art/keymap.c
M keyboards/planck/keymaps/dr_notsokind/keymap.c
M keyboards/planck/keymaps/mjt/keymap.c
M keyboards/planck/keymaps/mjtnumsym/keymap.c
M keyboards/planck/keymaps/vifon/keymap.c
M keyboards/preonic/keymaps/era1112/keymap.c
M keyboards/preonic/keymaps/laurentlaurent/keymap.c
M keyboards/thevankeyboards/roadkit/keymaps/flipphone/keymap.c
M keyboards/thevankeyboards/roadkit/keymaps/mjt/keymap.c
M keyboards/xiudi/xd75/keymaps/colinta/keymap.c
M keyboards/xiudi/xd75/keymaps/colinta/readme.md
M keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c
M keyboards/ymdk/melody96/keymaps/crilith/keymap.c
M layouts/community/ergodox/colemak_code_friendly/keymap.c
M layouts/community/ergodox/qwerty_code_friendly/keymap.c
M layouts/community/ortho_4x12/ajp10304/keymap.c
M quantum/dynamic_macro.h
M quantum/process_keycode/process_dynamic_macro.c
M quantum/quantum_keycodes.h
M quantum/quantum_keycodes_legacy.h
M users/klackygears/tap_dances.c
M docs/feature_dynamic_macros.md => docs/feature_dynamic_macros.md +12 -12
@@ 6,21 6,21 @@ You can store one or two macros and they may have a combined total of 128 keypre

To enable them, first include `DYNAMIC_MACRO_ENABLE = yes` in your `rules.mk`. Then, add the following keys to your keymap:

|Key               |Alias     |Description                                        |
|------------------|----------|---------------------------------------------------|
|`DYN_REC_START1`  |`DM_REC1` |Start recording Macro 1                            |
|`DYN_REC_START2`  |`DM_REC2` |Start recording Macro 2                            |
|`DYN_MACRO_PLAY1` |`DM_PLY1` |Replay Macro 1                                     |
|`DYN_MACRO_PLAY2` |`DM_PLY2` |Replay Macro 2                                     |
|`DYN_REC_STOP`    |`DM_RSTP` |Finish the macro that is currently being recorded. |
|Key                              |Alias    |Description                                       |
|---------------------------------|---------|--------------------------------------------------|
|`QK_DYNAMIC_MACRO_RECORD_START_1`|`DM_REC1`|Start recording Macro 1                           |
|`QK_DYNAMIC_MACRO_RECORD_START_2`|`DM_REC2`|Start recording Macro 2                           |
|`QK_DYNAMIC_MACRO_PLAY_1`        |`DM_PLY1`|Replay Macro 1                                    |
|`QK_DYNAMIC_MACRO_PLAY_2`        |`DM_PLY2`|Replay Macro 2                                    |
|`QK_DYNAMIC_MACRO_RECORD_STOP`   |`DM_RSTP`|Finish the macro that is currently being recorded.|

That should be everything necessary. 

To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`. 
To start recording the macro, press either `DM_REC1` or `DM_REC2`. 

To finish the recording, press the `DYN_REC_STOP` layer button. You can also press `DYN_REC_START1` or `DYN_REC_START2` again to stop the recording.
To finish the recording, press the `DM_RSTP` layer button. You can also press `DM_REC1` or `DM_REC2` again to stop the recording.

To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`.
To replay the macro, press either `DM_PLY1` or `DM_PLY2`.

It is possible to replay a macro as part of a macro. It's ok to replay macro 2 while recording macro 1 and vice versa but never create recursive macros i.e. macro 1 that replays macro 1. If you do so and the keyboard will get unresponsive, unplug the keyboard and plug it again.  You can disable this completely by defining `DYNAMIC_MACRO_NO_NESTING`  in your `config.h` file.



@@ 43,10 43,10 @@ If the LEDs start blinking during the recording with each keypress, it means the

### DYNAMIC_MACRO_USER_CALL

For users of the earlier versions of dynamic macros: It is still possible to finish the macro recording using just the layer modifier used to access the dynamic macro keys, without a dedicated `DYN_REC_STOP` key. If you want this behavior back, add `#define DYNAMIC_MACRO_USER_CALL` to your `config.h` and insert the following snippet at the beginning of your `process_record_user()` function:
For users of the earlier versions of dynamic macros: It is still possible to finish the macro recording using just the layer modifier used to access the dynamic macro keys, without a dedicated `DM_RSTP` key. If you want this behavior back, add `#define DYNAMIC_MACRO_USER_CALL` to your `config.h` and insert the following snippet at the beginning of your `process_record_user()` function:

```c
	uint16_t macro_kc = (keycode == MO(_DYN) ? DYN_REC_STOP : keycode);
	uint16_t macro_kc = (keycode == MO(_DYN) ? DM_RSTP : keycode);

	if (!process_record_dynamic_macro(macro_kc, record)) {
		return false;

M docs/keycodes.md => docs/keycodes.md +7 -7
@@ 306,13 306,13 @@ See also: [Caps Word](feature_caps_word.md)

See also: [Dynamic Macros](feature_dynamic_macros.md)

|Key              |Aliases  |Description                                       |
|-----------------|---------|--------------------------------------------------|
|`DYN_REC_START1` |`DM_REC1`|Start recording Macro 1                           |
|`DYN_REC_START2` |`DM_REC2`|Start recording Macro 2                           |
|`DYN_MACRO_PLAY1`|`DM_PLY1`|Replay Macro 1                                    |
|`DYN_MACRO_PLAY2`|`DM_PLY2`|Replay Macro 2                                    |
|`DYN_REC_STOP`   |`DM_RSTP`|Finish the macro that is currently being recorded.|
|Key                              |Aliases  |Description                                       |
|---------------------------------|---------|--------------------------------------------------|
|`QK_DYNAMIC_MACRO_RECORD_START_1`|`DM_REC1`|Start recording Macro 1                           |
|`QK_DYNAMIC_MACRO_RECORD_START_2`|`DM_REC2`|Start recording Macro 2                           |
|`QK_DYNAMIC_MACRO_PLAY_1`        |`DM_PLY1`|Replay Macro 1                                    |
|`QK_DYNAMIC_MACRO_PLAY_2`        |`DM_PLY2`|Replay Macro 2                                    |
|`QK_DYNAMIC_MACRO_RECORD_STOP`   |`DM_RSTP`|Finish the macro that is currently being recorded.|

## Grave Escape :id=grave-escape


M keyboards/biacco42/ergo42/keymaps/hdbx/keymap.c => keyboards/biacco42/ergo42/keymaps/hdbx/keymap.c +1 -1
@@ 125,7 125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   * `-------------------------------------------------------'   `-------------------------------------------------------'
   */
  [_ADJUST] = LAYOUT( \
    RGB_TOG,  MCR1,    MCR2,    MCR3,    XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, DYN_REC_START1, DYN_REC_START2, DYN_REC_STOP, KC_BSPC, \
    RGB_TOG,  MCR1,    MCR2,    MCR3,    XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX, DM_PLY1, DM_PLY2, DM_REC1, DM_REC2, DM_RSTP, KC_BSPC, \
    QK_BOOT,  RGB_MOD, RGB_M_P, RGB_M_B, RGB_HUI, RGB_SAI, RGB_VAI,   XXXXXXX, XXXXXXX, QWERTY,  GAME,   XXXXXXX, XXXXXXX, XXXXXXX, \
    KC_LSFT,  RGB_M_R, RGB_M_SN,RGB_M_G, RGB_HUD, RGB_SAD, RGB_VAD,   XXXXXXX, KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, \
    DB_TOGG,  XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX,   XXXXXXX, XXXXXXX, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \

M keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c => keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c +3 -3
@@ 121,9 121,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * `------------------------------------------------------------------------------------'
 */
[_ADJUST] = LAYOUT_ortho_4x12(
  M_CUSTOM, QK_BOOT, QWERTY,  BL_ON,   BL_OFF,  DYN_REC_START1,  DYN_REC_START2,  _______,             _______,           _______,              _______,  KC_DEL  ,
  KC_CAPS,  RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE,       KC_AUDIO_VOL_UP,   KC_MEDIA_PLAY_PAUSE,  _______,  QWERTY  ,
  TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP,    DYN_REC_STOP,    KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK,  _______,  COLEMAK ,
  M_CUSTOM, QK_BOOT, QWERTY,  BL_ON,   BL_OFF,  DM_REC1,         DM_REC2,         _______,             _______,           _______,              _______,  KC_DEL  ,
  KC_CAPS,  RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DM_PLY1,         DM_PLY2,         KC_AUDIO_MUTE,       KC_AUDIO_VOL_UP,   KC_MEDIA_PLAY_PAUSE,  _______,  QWERTY  ,
  TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DM_RSTP,         DM_RSTP,         KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK,  _______,  COLEMAK ,
  _______,  _______, _______, _______, _______, _______,         _______,         _______,             _______,           _______,              _______,  _______
),


M keyboards/dz60/keymaps/iso_de_root/keymap.c => keyboards/dz60/keymaps/iso_de_root/keymap.c +6 -6
@@ 18,7 18,7 @@ enum {


bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  uint16_t macro_kc = (keycode == MO(DYN) ? DYN_REC_STOP : keycode);
  uint16_t macro_kc = (keycode == MO(DYN) ? QK_DYNAMIC_MACRO_RECORD_STOP : keycode);
  
  if (!process_record_dynamic_macro(macro_kc, record)) {
      return false;


@@ 85,11 85,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
*/

#define MacRec1 DYN_REC_START1
#define MacRec2 DYN_REC_START2
#define MacPla1 DYN_MACRO_PLAY1
#define MacPla2 DYN_MACRO_PLAY2
#define MacStop DYN_REC_STOP
#define MacRec1 DM_REC1
#define MacRec2 DM_REC2
#define MacPla1 DM_PLY1
#define MacPla2 DM_PLY2
#define MacStop DM_RSTP

  [DEF] = LAYOUT_60_iso_5x1u_split_rshift(
    KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,

M keyboards/dztech/dz65rgb/keymaps/drootz/keymap.c => keyboards/dztech/dz65rgb/keymaps/drootz/keymap.c +3 -3
@@ 124,9 124,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_TRNS, KC_LALT, KC_LGUI, KC_TRNS, KC_TRNS, MO(_FN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
    ),
    [_FN] = LAYOUT_65_ansi(
        DYN_REC_STOP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
        KC_TRNS, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SAD, RGB_SAI, DYN_MACRO_PLAY2, DYN_REC_START2,
        KC_TRNS, KC_BRID, KC_VOLD, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_HUD, RGB_HUI, DYN_MACRO_PLAY1, DYN_REC_START1,
        DM_RSTP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
        KC_TRNS, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SAD, RGB_SAI, DM_PLY2, DM_REC2,
        KC_TRNS, KC_BRID, KC_VOLD, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_HUD, RGB_HUI, DM_PLY1, DM_REC1,
        KC_TRNS, TO(_MAIN), TO(_MAC), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SPD, RGB_SPI, KC_TRNS, RGB_VAI, KC_NO,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_VAD, RGB_MOD
    ),

M keyboards/dztech/dz65rgb/keymaps/yuannan/keymap.c => keyboards/dztech/dz65rgb/keymaps/yuannan/keymap.c +2 -2
@@ 57,8 57,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
		DEC_CLICK_SPEED,INC_CLICK_SPEED,KC_TRNS,								KC_TRNS,							KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,				KC_TRNS,	KC_TRNS
    ),
    [_HYPER_LAYER] = LAYOUT_65_ansi(
		DYN_REC_STOP,	DYN_REC_START1,		DYN_REC_START2,		KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,
		KC_NO,			DYN_MACRO_PLAY1,	DYN_MACRO_PLAY2,	KC_NO,		KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,
		DM_RSTP,		DM_REC1,			DM_REC2,			KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,
		KC_NO,			DM_PLY1,			DM_PLY2,			KC_NO,		KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,
		KC_NO,			KC_NO,				KC_NO,				KC_NO,		KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,				KC_TRNS,	KC_TRNS,
		KC_LSFT,		KC_NO,				KC_NO,				RGB_HUI,	RGB_SAI,	RGB_VAI,	RGB_SPI,	RGB_MOD,	KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,				KC_TRNS,	KC_TRNS,
		KC_TRNS,		KC_TRNS,			KC_TRNS,									RGB_TOG,							KC_TRNS,	KC_TRNS,	KC_TRNS,	KC_TRNS,				KC_TRNS,	KC_TRNS

M keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c => keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c +3 -3
@@ 201,13 201,13 @@ void macro_tapdance_fn(qk_tap_dance_state_t *state, void *user_data) {
  keyrecord_t record;
  dprintf("macro_tap_dance_fn %d\n", state->count);
  if (is_macro1_recording) {
    keycode = DYN_REC_STOP;
    keycode = DM_RSTP;
    is_macro1_recording = false;
    layer_state_set_user(current_layer_state);
  } else if (state->count == 1) {
    keycode = DYN_MACRO_PLAY1;
    keycode = DM_PLY1;
  } else {
    keycode = DYN_REC_START1;
    keycode = DM_REC1;
    is_macro1_recording = true;
    layer_state_set_user(current_layer_state);
  }

M keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c => keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c +3 -3
@@ 109,13 109,13 @@ void macro_tapdance_fn(qk_tap_dance_state_t *state, void *user_data) {
  keyrecord_t record;
  dprintf("macro_tap_dance_fn %d\n", state->count);
  if (is_macro1_recording) {
    keycode = DYN_REC_STOP;
    keycode = DM_RSTP;
    is_macro1_recording = false;
    layer_state_set_user(current_layer_state);
  } else if (state->count == 1) {
    keycode = DYN_MACRO_PLAY1;
    keycode = DM_PLY1;
  } else {
    keycode = DYN_REC_START1;
    keycode = DM_REC1;
    is_macro1_recording = true;
    layer_state_set_user(current_layer_state);
  }

M keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c => keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c +5 -5
@@ 7,13 7,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
        //  ESCAPE                 |                         |                         |                         |                         |                         |     START RECORDING     //
        //                         |                         |                         |                         |                         |                         |                         //
                   KC_ESC,                 TD(GRV_TILD),             TD(AT_DLR),              TD(LCBR_LABK),            TD(LPRN_LBRC),            TD(EXLM_QUES),           DYN_REC_START1,     //
                   KC_ESC,                 TD(GRV_TILD),             TD(AT_DLR),              TD(LCBR_LABK),            TD(LPRN_LBRC),            TD(EXLM_QUES),           DM_REC1,            //
        //                         |                       ~ |                       $ |                       < |                       [ |                       ? |                         //
        //                         |            TAP DANCE: ` |            TAP DANCE: @              TAP DANCE: { |            TAP DANCE: ( |            TAP DANCE: ! |     DYNAMIC MARCO 1     //
         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
        //  TAB                    |      MOD TAP: ALT+SHIFT |       MOD TAP: CTRL+ALT |     MOD TAP: CTRL+SHIFT | P                       | Y                       |                         //
        //                         |                         |                         |                         |                         |                         |                         //
                   KC_TAB,                TD(NONE_LEAD),            TD(QUOT_DQUO),           TD(DOT_COMM),               LCG_T(KC_P),              LAG_T(KC_Y),            DYN_MACRO_PLAY1,    //
                   KC_TAB,                TD(NONE_LEAD),            TD(QUOT_DQUO),           TD(DOT_COMM),               LCG_T(KC_P),              LAG_T(KC_Y),            DM_PLY1,            //
        //                         |                    LEAD |                       " |                       , |                         |                         |                         //
        //                         |         TAP DANCE: NONE |            TAP DANCE: ' |            TAP DANCE: . |       MOD TAP: CTRL+GUI |        MOD TAP: ALT+GUI |                         //
         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------|   PLAY DYNAMIC MACRO 1  //


@@ 25,7 25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------|  META                   //
        //          STOP RECORDING |  MOD TAP: GUI+SHIFT+ALT | Q                       | J                       | K                       | X                       |                         //
        //                         |                         |                         |                         |                         |                         |                         //
                DYN_REC_STOP,             TD(SCLN_COLN),            LCAG_T(KC_Q),             TD(J_MED_MEH),            TD(K_NUM_HYP),            LCSG_T(KC_X),                KC_LGUI,        //
                DM_RSTP,                  TD(SCLN_COLN),            LCAG_T(KC_Q),             TD(J_MED_MEH),            TD(K_NUM_HYP),            LCSG_T(KC_X),                KC_LGUI,        //
        //                         |                       : |                         |                         |                         |                         |                         //
        //           DYNAMIC MACRO |            TAP DANCE: ; |      MOD TAP: SHIFT+GUI |  M TAP DANCE: MEDIA/MEH |  M TAP DANCE: ATM/HYPER |  MOD TAP: CTL+SHIFT+GUI |                         //
         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//


@@ 63,13 63,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
        //                         |                         |                         |                         |                         |                         |                         //
        //                         |                         |                         |                         |                         |                         |                         //
                DYN_REC_START2,           TD(APMR_PIPE),            TD(RPRN_RBRC),            TD(RCBR_RABK),            TD(HASH_PERC),            TD(ASTR_CIRC),               XXXXXXX,        //
                DM_REC2,                   TD(APMR_PIPE),            TD(RPRN_RBRC),            TD(RCBR_RABK),            TD(HASH_PERC),            TD(ASTR_CIRC),               XXXXXXX,        //
        //                         |                         |                         |                         |                         |                         |                         //
        //                         |                         |                         |                         |                         |                         |                         //
         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
        //                         |                         |                         |                         |                         |                         |                         //
        //                         |                         |                         |                         |                         |                         |                         //
                DYN_MACRO_PLAY2,           LAG_T(KC_F),              LCG_T(KC_G),             C_S_T(KC_C),                LCA_T(KC_R),             LAS_T(KC_L),             TD(SLSH_BSLS),     //
                DM_PLY2,                   LAG_T(KC_F),              LCG_T(KC_G),             C_S_T(KC_C),                LCA_T(KC_R),             LAS_T(KC_L),             TD(SLSH_BSLS),     //
        //                         |                         |                         |                         |                         |                         |                         //
        //                         |                         |                         |                         |                         |                         |                         //
        //                         |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//

M keyboards/gh60/satan/keymaps/addcninblue/keymap.c => keyboards/gh60/satan/keymaps/addcninblue/keymap.c +1 -1
@@ 67,7 67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
  [_FN] = LAYOUT_60_ansi_split_bs_rshift( /* Layer 2 */
      KC_GRAVE , KC_F1   , KC_F2   , KC_F3   , KC_F4          , KC_F5           , KC_F6        , KC_F7    , KC_F8   , KC_F9    , KC_F10  , KC_F11  , KC_F12       , KC_INS , KC_DEL , \
      KC_CAPS  , KC_VOLD , KC_MUTE , KC_VOLU , DYN_REC_START1 , DYN_MACRO_PLAY1 , DYN_REC_STOP , KC_PGUP  , KC_HOME , ______   , KC_PSCR , KC_UP   , ______       , KC_DEL , \
      KC_CAPS  , KC_VOLD , KC_MUTE , KC_VOLU , DM_REC1        , DM_PLY1         , DM_RSTP      , KC_PGUP  , KC_HOME , ______   , KC_PSCR , KC_UP   , ______       , KC_DEL , \
      KC_LCTL  , KC_END  , ______  , KC_PGDN , ______         , ______          , KC_LEFT      , KC_DOWN  , KC_UP   , KC_RIGHT , KC_LEFT , KC_RGHT , KC_ENT       , \
      KC_LSFT  , KC_MPRV , KC_MPLY , KC_MNXT , BL_DEC         , BL_TOGG         , BL_INC       , ______   , ______  , ______   , KC_DOWN , KC_RSFT , TO(_DEFAULT) , \
      ______   , ______  , KC_LALT , KC_SPC  , KC_RALT        , QK_BOOT           , ______       , ______ \

M keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c => keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c +5 -5
@@ 22,11 22,11 @@ extern backlight_config_t backlight_config;

#include "dynamic_macro.h"
#define FN_CAPS LT(_FL, KC_CAPS)
#define KC_DMR1 DYN_REC_START1
#define KC_DMR2 DYN_REC_START2
#define KC_DMP1 DYN_MACRO_PLAY1
#define KC_DMP2 DYN_MACRO_PLAY2
#define KC_DMRS DYN_REC_STOP
#define KC_DMR1 DM_REC1
#define KC_DMR2 DM_REC2
#define KC_DMP1 DM_PLY1
#define KC_DMP2 DM_PLY2
#define KC_DMRS DM_RSTP

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /*#### _BL: Base Layer - Standard TKL QWERTY layout.

M keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c => keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c +3 -3
@@ 122,9 122,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * `--------------------------------------------------------------------------------------------------'
 */
[_ADJUST] = LAYOUT(
  M_CUSTOM, QK_BOOT, QWERTY,  _______, _______, DYN_REC_START1,                    DYN_REC_START2,  _______,             _______,           _______,              _______,  KC_DEL  ,
  KC_CAPS,  _______, _______, _______, _______, DYN_MACRO_PLAY1,                   DYN_MACRO_PLAY2, KC_AUDIO_MUTE,       KC_AUDIO_VOL_UP,   KC_MEDIA_PLAY_PAUSE,  _______,  QWERTY  ,
  TG(_MAC), _______, _______, _______, _______, DYN_REC_STOP,                      DYN_REC_STOP,    KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK,  _______,  COLEMAK ,
  M_CUSTOM, QK_BOOT, QWERTY,  _______, _______, DM_REC1,                    DM_REC2,  _______,             _______,           _______,              _______,  KC_DEL  ,
  KC_CAPS,  _______, _______, _______, _______, DM_PLY1,                    DM_PLY2, KC_AUDIO_MUTE,       KC_AUDIO_VOL_UP,   KC_MEDIA_PLAY_PAUSE,  _______,  QWERTY  ,
  TG(_MAC), _______, _______, _______, _______, DM_RSTP,                    DM_RSTP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK,  _______,  COLEMAK ,
  _______,  _______, _______, _______, _______, _______,         _______, _______, _______,         _______,             _______,           _______,              _______,  _______
),


M keyboards/hhkb/ansi/keymaps/cinaeco/keymap.c => keyboards/hhkb/ansi/keymaps/cinaeco/keymap.c +3 -3
@@ 131,7 131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     */

    [UTIL] = LAYOUT(
        QK_BOOT, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, ____, ____, ____, ____, ____, ____, ____, ____, DF(QWER), DF(COLE), DF(DVOR), DB_TOGG,
        QK_BOOT, DM_PLY1, DM_PLY2, ____, ____, ____, ____, ____, ____, ____, ____, DF(QWER), DF(COLE), DF(DVOR), DB_TOGG,
        ____, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, ____, KC_HOME, KC_PGDN, KC_PGUP, KC_END, ____, ____, ____, ____,
        ____, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, ____, ____, ____,
        ____, ____, ____, ____, ____, KC_SPC, ____, ____, ____, ____, ____, ____, ____,


@@ 154,9 154,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     */

    [MREC] = LAYOUT(
        ____, DYN_REC_START1, DYN_REC_START2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
        ____, DM_REC1, DM_REC2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
        ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
        ____, ____, DYN_REC_STOP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
        ____, ____, DM_RSTP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
        ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
        ____, ____, ____, ____, ____)


M keyboards/hhkb/ansi/keymaps/mjt/keymap.c => keyboards/hhkb/ansi/keymaps/mjt/keymap.c +3 -3
@@ 75,15 75,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
    [DYN] = LAYOUT(
        KC_TRNS, DYN_REC_START1, DYN_REC_START2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2,
        KC_TRNS, DM_REC1, DM_REC2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DM_PLY1, DM_PLY2,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MACSLEEP, KC_HOME, KC_END, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, DYN_REC_STOP, KC_TRNS, KC_TRNS)};
        KC_TRNS, KC_TRNS, DM_RSTP, KC_TRNS, KC_TRNS)};

bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
    uint16_t macro_kc = (keycode == MO(DYN) ? DYN_REC_STOP : keycode);
    uint16_t macro_kc = (keycode == MO(DYN) ? DM_RSTP : keycode);
    if (!process_dynamic_macro(macro_kc, record))
    {
        return false;

M keyboards/hhkb/ansi/keymaps/shela/keymap.c => keyboards/hhkb/ansi/keymaps/shela/keymap.c +2 -2
@@ 50,8 50,8 @@ enum custom_keycodes {
/* Additional custom keycodes */
#define MO_HHKB MO(_HHKB)
#define LT_SPFN LT(_SPACE_FN, KC_SPC)
#define DM_STA1 DYN_REC_START1
#define DM_PLY1 DYN_MACRO_PLAY1
#define DM_STA1 DM_REC1
#define DM_PLY1 DM_PLY1

/* User settings structure for the EEPROM */
typedef union {

M keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c => keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c +5 -5
@@ 22,11 22,11 @@ extern backlight_config_t backlight_config;

#include "dynamic_macro.h"
#define FN_CAPS LT(_FL, KC_CAPS)
#define KC_DMR1 DYN_REC_START1
#define KC_DMR2 DYN_REC_START2
#define KC_DMP1 DYN_MACRO_PLAY1
#define KC_DMP2 DYN_MACRO_PLAY2
#define KC_DMRS DYN_REC_STOP
#define KC_DMR1 DM_REC1
#define KC_DMR2 DM_REC2
#define KC_DMP1 DM_PLY1
#define KC_DMP2 DM_PLY2
#define KC_DMRS DM_RSTP

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /*#### _BL: Base Layer - Standard TKL QWERTY layout.

M keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c => keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c +5 -5
@@ 22,11 22,11 @@ extern backlight_config_t backlight_config;

#include "dynamic_macro.h"
#define FN_CAPS LT(_FL, KC_CAPS)
#define KC_DMR1 DYN_REC_START1
#define KC_DMR2 DYN_REC_START2
#define KC_DMP1 DYN_MACRO_PLAY1
#define KC_DMP2 DYN_MACRO_PLAY2
#define KC_DMRS DYN_REC_STOP
#define KC_DMR1 DM_REC1
#define KC_DMR2 DM_REC2
#define KC_DMP1 DM_PLY1
#define KC_DMP2 DM_PLY2
#define KC_DMRS DM_RSTP

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /*#### _BL: Base Layer - Mostly standard 65% QWERTY layout.

M keyboards/jd45/keymaps/mjt6u/keymap.c => keyboards/jd45/keymaps/mjt6u/keymap.c +3 -3
@@ 74,8 74,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  ),

  [_ADJUST] = LAYOUT( \
    _______, QK_BOOT, _______, _______, _______,   _______, _______,    DYN_REC_START1,  DYN_REC_START2,  _______,  KC_PSCR, _______, _______, \
    _______, _______, _______, _______, USEFNMODS, _______, _______,    DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, MACSLEEP, _______,          _______, \
    _______, QK_BOOT, _______, _______, _______,   _______, _______,    DM_REC1,  DM_REC2,  _______,  KC_PSCR, _______, _______, \
    _______, _______, _______, _______, USEFNMODS, _______, _______,    DM_PLY1,  DM_PLY2, MACSLEEP, _______,          _______, \
    _______, _______, _______, _______, _______,   _______, USENUMMODS, _______,         _______,         _______,  _______,          _______, \
    XXXXXXX, _______, _______, XXXXXXX,            XXXXXXX,             _______,                          XXXXXXX, __MOD__,  __MOD__, XXXXXXX  \
  )


@@ 91,7 91,7 @@ static bool singular_key = false;

bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
    uint16_t macro_kc = (keycode == MO(_ADJUST) ? DYN_REC_STOP : keycode);
    uint16_t macro_kc = (keycode == MO(_ADJUST) ? DM_RSTP : keycode);
    if (!process_record_dynamic_macro(macro_kc, record))
    {
        return false;

M keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c => keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c +2 -2
@@ 31,8 31,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        QK_BOOT, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCRL, KC_PAUS,
        KC_TRNS, MACRO1, MACRO2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        MACROTAB, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUBS, KC_TRNS,
        KC_TRNS, VK_TOGG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, DYN_REC_START2, DYN_MACRO_PLAY2, KC_TRNS, KC_TRNS,
        KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, DYN_REC_STOP, DYN_REC_START1, DYN_MACRO_PLAY1, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, VK_TOGG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, DM_REC2, DM_PLY2, KC_TRNS, KC_TRNS,
        KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, DM_RSTP, DM_REC1, DM_PLY1, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, LCA(KC_DEL), KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS
    ),
    [_NUMPAD] = LAYOUT_ansi_1u(

M keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c => keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c +2 -2
@@ 105,8 105,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     * `-----------------------------------------------------------------------------------'
     */
    [_FN] = LAYOUT_ortho_4x12(
        _______, BL_STEP, _______,  KC_SLEP, _______, _______,     _______,     DYN_REC_START1, DYN_MACRO_PLAY1, DYN_REC_STOP, _______, KC_VOLU,
        _______, VK_TOGG, RGB_MOD,  RGB_HUI, RGB_SAI, RGB_VAI,     _______,     DYN_REC_START2, DYN_MACRO_PLAY2, _______,      _______, KC_VOLD,
        _______, BL_STEP, _______,  KC_SLEP, _______, _______,     _______,     DM_REC1, DM_PLY1, DM_RSTP, _______, KC_VOLU,
        _______, VK_TOGG, RGB_MOD,  RGB_HUI, RGB_SAI, RGB_VAI,     _______,     DM_REC2, DM_PLY2, _______,      _______, KC_VOLD,
        _______, RGB_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,     _______,     _______,        _______,         _______,      KC_MSTP, KC_MUTE,
        QK_BOOT, _______, _______,  _______, _______, LCA(KC_DEL), LCA(KC_INS), _______,        _______,         KC_MPRV,      KC_MPLY, KC_MNXT
    )

M keyboards/keebio/levinson/keymaps/jyh2/keymap.c => keyboards/keebio/levinson/keymaps/jyh2/keymap.c +5 -5
@@ 31,11 31,11 @@ enum custom_keycodes {

#include "dynamic_macro.h"

#define DREC_1  DYN_REC_START1
#define DREC_2  DYN_REC_START2
#define DPLAY_1 DYN_MACRO_PLAY1
#define DPLAY_2 DYN_MACRO_PLAY2
#define DSTOP   DYN_REC_STOP
#define DREC_1  DM_REC1
#define DREC_2  DM_REC2
#define DPLAY_1 DM_PLY1
#define DPLAY_2 DM_PLY2
#define DSTOP   DM_RSTP


// Mod Tap Definitions

M keyboards/m10a/keymaps/gam3cat/keymap.c => keyboards/m10a/keymaps/gam3cat/keymap.c +5 -5
@@ 27,11 27,11 @@ extern backlight_config_t backlight_config;

#include "dynamic_macro.h"
#define FN_ZERO LT(_L9, KC_KP_0)
#define KC_DMR1 DYN_REC_START1
#define KC_DMR2 DYN_REC_START2
#define KC_DMP1 DYN_MACRO_PLAY1
#define KC_DMP2 DYN_MACRO_PLAY2
#define KC_DMRS DYN_REC_STOP
#define KC_DMR1 DM_REC1
#define KC_DMR2 DM_REC2
#define KC_DMP1 DM_PLY1
#define KC_DMP2 DM_PLY2
#define KC_DMRS DM_RSTP

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /*## Layout Config:

M keyboards/mt/split75/keymaps/art/keymap.c => keyboards/mt/split75/keymaps/art/keymap.c +2 -2
@@ 72,8 72,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_VOLD,KC_VOLU, KC_GRAVE, KC_1,    KC_2,    KC_3,   KC_4,   KC_5,   KC_6,                 KC_7,   KC_8,    KC_9,   KC_0,    KC_MINUS, KC_EQUAL, KC_BSPC,          KC_DEL,
KC_MPRV,KC_MNXT, KC_TAB,   KC_Q,    KC_W,    KC_E,   KC_R,   KC_T,                 KC_Y,   KC_U,   KC_I,    KC_O,   KC_P,    KC_LBRC,  KC_RBRC,  KC_BSLS,           KC_END,
KC_HOME,KC_END,  KC_CAPS,  KC_A,    KC_S,    KC_D,   KC_F,   KC_G,   KC_H,   KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_ENTER,         KC_PGUP,
DYN_MACRO_PLAY1,KC_MUTE,KC_LSFT,KC_Z,KC_X,KC_C,  KC_V,   KC_B,                 KC_N,   KC_M,   KC_COMM, KC_DOT, LT(GIT,KC_SLSH),                     KC_RSFT,  KC_UP,   KC_PGDN,
DYN_REC_STOP,DYN_REC_START1,KC_LCTL, KC_LGUI, KC_LALT, LT(MEDIA,KC_SPC), LT(COMBOS,KC_BSPC),       LT(NAV,KC_APP), LT(LAYOUT_CHG, KC_ENTER),KC_RALT,KC_RCTL,   KC_LEFT,  KC_DOWN, KC_RIGHT
DM_PLY1,KC_MUTE,KC_LSFT,KC_Z,KC_X,KC_C,  KC_V,   KC_B,                 KC_N,   KC_M,   KC_COMM, KC_DOT, LT(GIT,KC_SLSH),                     KC_RSFT,  KC_UP,   KC_PGDN,
DM_RSTP,DM_REC1,KC_LCTL, KC_LGUI, KC_LALT, LT(MEDIA,KC_SPC), LT(COMBOS,KC_BSPC),       LT(NAV,KC_APP), LT(LAYOUT_CHG, KC_ENTER),KC_RALT,KC_RCTL,   KC_LEFT,  KC_DOWN, KC_RIGHT
  ),

  /* Base          ,-----------------------------------------.     ,-----------------------------------------------------.

M keyboards/planck/keymaps/dr_notsokind/keymap.c => keyboards/planck/keymaps/dr_notsokind/keymap.c +7 -7
@@ 161,8 161,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
[_MEDIA] = LAYOUT_planck_grid(
	XXXXXXX, XXXXXXX, KC_WHOM, XXXXXXX, XXXXXXX, XXXXXXX, KC_AGAIN, XXXXXXX, KC_INS,   XXXXXXX, KC_PSCR, XXXXXXX,
	XXXXXXX, XXXXXXX, KC_WSCH, XXXXXXX, KC_FIND, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,  XXXXXXX, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2,
	KC_LSFT, XXXXXXX, XXXXXXX, KC_CALC, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, ZOOM_OUT, ZOOM_IN, KC_MPRV, DYN_REC_STOP,
	XXXXXXX, XXXXXXX, KC_WSCH, XXXXXXX, KC_FIND, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,  XXXXXXX, DM_PLY1, DM_PLY2,
	KC_LSFT, XXXXXXX, XXXXXXX, KC_CALC, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, ZOOM_OUT, ZOOM_IN, KC_MPRV, DM_RSTP,
	ONESHOT, XXXXXXX, XXXXXXX, _______, KC_VOLD, KC_MUTE, KC_MUTE,  KC_VOLU, ZOOM_NML, KC_MSTP, KC_MNXT, KC_MPLY 
),



@@ 179,7 179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
[_ONESHOT] = LAYOUT_planck_grid(
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),


@@ 221,16 221,16 @@ void press_key(uint16_t key) {
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    // uint16_t macro_kc = (keycode == ONESHOT ? DYN_REC_STOP : keycode);
    // uint16_t macro_kc = (keycode == ONESHOT ? DM_RSTP : keycode);
    if (!process_record_dynamic_macro(keycode, record)) {
        switch(keycode) {
          case DYN_REC_START1:
          case DYN_REC_START2:
          case QK_DYNAMIC_MACRO_RECORD_START_1:
          case QK_DYNAMIC_MACRO_RECORD_START_2:
#ifdef AUDIO_ENABLE
              PLAY_SONG(tone_dyn_macro_rec);
#endif
              break;
          case DYN_REC_STOP:
          case QK_DYNAMIC_MACRO_RECORD_STOP:
#ifdef AUDIO_ENABLE
              PLAY_SONG(tone_dyn_macro_stop);
#endif

M keyboards/planck/keymaps/mjt/keymap.c => keyboards/planck/keymaps/mjt/keymap.c +3 -3
@@ 124,10 124,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_DYN] = LAYOUT_planck_grid(
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______ ,
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2, _______ ,
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, _______
)

};


@@ 151,7 151,7 @@ void persistant_default_layer_set(uint16_t default_layer) {
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  uint16_t macro_kc = (keycode == MO(_DYN) ? DYN_REC_STOP : keycode);
  uint16_t macro_kc = (keycode == MO(_DYN) ? DM_RSTP : keycode);
  if (!process_record_dynamic_macro(macro_kc, record)) {
    return false;
  }

M keyboards/planck/keymaps/mjtnumsym/keymap.c => keyboards/planck/keymaps/mjtnumsym/keymap.c +5 -5
@@ 63,8 63,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
[_FKEYS] = LAYOUT_planck_grid(
  KC_TILD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______,
  KC_DEL,  KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F6,   _______, _______, MACSLEEP, DYN_REC_START1, DYN_REC_START2,
  _______, _______, _______, _______, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______, DYN_REC_STOP,
  KC_DEL,  KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F6,   _______, _______, MACSLEEP, DM_REC1, DM_REC2,
  _______, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, _______, DM_RSTP,
  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),



@@ 123,10 123,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
) /*,
[_DYN] = LAYOUT_planck_grid(
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______ ,
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2, _______ ,
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______
  _______ , _______, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, _______
)*/

};


@@ 150,7 150,7 @@ void persistant_default_layer_set(uint16_t default_layer) {
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  uint16_t macro_kc = (keycode == FKEYS ? DYN_REC_STOP : keycode);
  uint16_t macro_kc = (keycode == FKEYS ? DM_RSTP : keycode);
  if (!process_record_dynamic_macro(macro_kc, record)) {
    return false;
  }

M keyboards/planck/keymaps/vifon/keymap.c => keyboards/planck/keymaps/vifon/keymap.c +3 -3
@@ 82,8 82,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        _______, _______, KC_LGUI, KC_LALT, _______,           _______,           _______, _______, _______, _______, _______
        ),
    [_DYN] = LAYOUT_planck_mit( /* special */
        KM_HOLD,  DYN_REC_START1, DYN_MACRO_PLAY1, _______, _______,    _______, _______, KC_APP,  KC_INS,  _______, KC_PSCR, KC_PAUS,
        QK_LOCK,  DYN_REC_START2, DYN_MACRO_PLAY2, _______, _______,    _______, _______, _______, _______, KC_CAPS, KC_SCRL, KC_NUM,
        KM_HOLD,  DM_REC1, DM_PLY1, _______, _______,    _______, _______, KC_APP,  KC_INS,  _______, KC_PSCR, KC_PAUS,
        QK_LOCK,  DM_REC2, DM_PLY2, _______, _______,    _______, _______, _______, _______, KC_CAPS, KC_SCRL, KC_NUM,
        KM_SHLK,  _______,        _______,         _______, _______,    _______, _______, _______, _______, _______, _______, _______,
        _______,  _______,        _______,         _______, KM_PP_GAME,      DF(_QW),     DF(_PP), _______, _______, _______, _______
        ),


@@ 103,7 103,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    static uint16_t key_timer;
    static uint8_t ignore_up_events = 0;

    uint16_t macro_kc = (keycode == MO(_DYN) ? DYN_REC_STOP : keycode);
    uint16_t macro_kc = (keycode == MO(_DYN) ? DM_RSTP : keycode);
    if (!process_record_dynamic_macro(macro_kc, record)) {
        return false;
    }

M keyboards/preonic/keymaps/era1112/keymap.c => keyboards/preonic/keymaps/era1112/keymap.c +4 -4
@@ 264,7 264,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) {
        }

    // Sound when Dynamic recording started
    case DYN_REC_START1:
    case QK_DYNAMIC_MACRO_RECORD_START_1:

        // If pressed
        if (record->event.pressed) {


@@ 279,7 279,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) {
        }

    // Sound when Dynamic recording stopped
    case DYN_REC_STOP:
    case QK_DYNAMIC_MACRO_RECORD_STOP:

        // If pressed
        if (record->event.pressed) {


@@ 336,7 336,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    // lower key
    [_LOWER] = LAYOUT_ortho_5x12 (
        DYN_MACRO_PLAY1,    DYN_REC_START1, DYN_REC_STOP,   KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,            KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,
        DM_PLY1,            DM_REC1,        DM_RSTP,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,            KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,
        KC_TRNS,            KC_1,           KC_2,           KC_3,           KC_4,           KC_5,           KC_6,           KC_7,               KC_8,           KC_9,       KC_0,       KC_DEL,
        KC_BSPC,            KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_F6,          KC_QUOT,            KC_GRV,         KC_LCBR,    KC_RCBR,    KC_TRNS,
        KC_TRNS,            KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_F11,         KC_F12,         KC_MINS,            KC_EQL,         KC_TRNS,    KC_BSLS,    KC_TRNS,


@@ 345,7 345,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    // raise key
    [_RAISE] = LAYOUT_ortho_5x12 (
        DYN_MACRO_PLAY1,    DYN_REC_START1, DYN_REC_STOP,   KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,            KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,
        DM_PLY1,            DM_REC1,        DM_RSTP,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,            KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,
        KC_TRNS,            KC_EXLM,        KC_AT,          KC_HASH,        KC_DLR,         KC_PERC,        KC_CIRC,        KC_AMPR,            KC_ASTR,        KC_LPRN,    KC_RPRN,    KC_DEL,
        KC_DEL,             KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_F6,          KC_DQUO,            KC_TILD,        KC_LBRC,    KC_RBRC,    KC_TRNS,
        KC_TRNS,            KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_F11,         KC_F12,         KC_UNDS,            KC_PLUS	,       KC_TRNS,    KC_PIPE,    KC_TRNS,

M keyboards/preonic/keymaps/laurentlaurent/keymap.c => keyboards/preonic/keymaps/laurentlaurent/keymap.c +12 -12
@@ 6,11 6,11 @@
        #include "../../rev3/config.h"
        #include "../../rev3/rev3.h"
        enum dynamic_macro_keycodes {
            DYN_REC_START1 = DYNAMIC_MACRO_RANGE,
            DYN_REC_START2,
            DYN_REC_STOP,
            DYN_MACRO_PLAY1,
            DYN_MACRO_PLAY2,
            DM_REC1 = DYNAMIC_MACRO_RANGE,
            DM_REC2,
            DM_RSTP,
            DM_PLY1,
            DM_PLY2,
        };
        #define QMK_KEYBOARD_H "rev3.h"
    #endif


@@ 258,8 258,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,  KC_SCRL,  KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
        KC_TAB,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10, XXXXXXX,  KC_AMPR, KC_ASTR, KC_LCBR, KC_RCBR, KC_DEL,
        KC_CAPS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15, XXXXXXX,  KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, XXXXXXX,
        _______, KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, XXXXXXX,  KC_NUHS, KC_NUBS, DYN_REC_START1,   DYN_REC_START2, DYN_REC_STOP,
        KC_LCTL, KC_LALT, KC_LGUI, _______, KC_BSPC, KC_SPC,  KC_SPC,  KC_ENT,  __LYB__, DYN_MACRO_PLAY1,  DYN_MACRO_PLAY2, LLSWIT
        _______, KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, XXXXXXX,  KC_NUHS, KC_NUBS, DM_REC1, DM_REC2, DM_RSTP,
        KC_LCTL, KC_LALT, KC_LGUI, _______, KC_BSPC, KC_SPC,  KC_SPC,  KC_ENT,  __LYB__, DM_PLY1, DM_PLY2, LLSWIT
    ),

    /* Adjust (Lower + Raise)


@@ 322,8 322,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_ESC,   _______,  _______,  _______,  _______,  KC_SCRL,  _______,  _______,  _______,  _______,  _______,  _______,
        KC_TAB,   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_DEL,
        KC_CAPS,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  DYN_REC_START1, DYN_REC_START2, DYN_REC_STOP,
        KC_LCTL,  KC_LALT,  KC_LGUI,  KC_DEL,  KC_BSPC,  KC_SPC,   KC_SPC,   __LYB__,  _______,  DYN_MACRO_PLAY1, DYN_MACRO_PLAY2,  LLSWIT
        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  DM_REC1,  DM_REC2,  DM_RSTP,
        KC_LCTL,  KC_LALT,  KC_LGUI,  KC_DEL,  KC_BSPC,  KC_SPC,   KC_SPC,   __LYB__,  _______,   DM_PLY1,  DM_PLY2,  LLSWIT
    ),

    /* Numeric Pad


@@ 419,7 419,7 @@ bool            process_record_user(uint16_t keycode, keyrecord_t *record) {
// Play sound on Macro stop
#ifdef AUDIO_ENABLE
        switch (keycode) {
            case DYN_REC_STOP:
            case QK_DYNAMIC_MACRO_RECORD_STOP:
                if (record->event.pressed) {
                    PLAY_SONG(tone_macro_record_stop);
                }


@@ 506,13 506,13 @@ bool            process_record_user(uint16_t keycode, keyrecord_t *record) {
            break;
#ifdef AUDIO_ENABLE
            // Play sound on Macro record start
        case DYN_REC_START1:
        case QK_DYNAMIC_MACRO_RECORD_START_1:
            if (record->event.pressed) {
                PLAY_SONG(tone_macro1_record);
            }
            return false;
            break;
        case DYN_REC_START2:
        case QK_DYNAMIC_MACRO_RECORD_START_2:
            if (record->event.pressed) {
                PLAY_SONG(tone_macro2_record);
            }

M keyboards/thevankeyboards/roadkit/keymaps/flipphone/keymap.c => keyboards/thevankeyboards/roadkit/keymaps/flipphone/keymap.c +2 -2
@@ 66,9 66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    _______,                   MO(_DYN)               \
  ),
  [_DYN] = LAYOUT_numpad_4x4( /* DYNAMIC MACRO */
    DYN_REC_START1, DYN_REC_START2, _______, DYN_REC_STOP, \
    DM_REC1, DM_REC2, _______, DM_RSTP, \
    _______, _______,  _______,                            \
    DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______, _______,    \
    DM_PLY1, DM_PLY2, _______, _______,    \
    _______,            _______                            \
  ),
};

M keyboards/thevankeyboards/roadkit/keymaps/mjt/keymap.c => keyboards/thevankeyboards/roadkit/keymaps/mjt/keymap.c +2 -2
@@ 64,9 64,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    _______,                 _______
  ),
  [_DYN] = LAYOUT_numpad_4x4( /* DYNAMIC MACRO */
    DYN_REC_START1,  DYN_REC_START2,  _______, _______, \
    DM_REC1,  DM_REC2,  _______, _______, \
    _______,         _______,         _______, \
    DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______, _______, \
    DM_PLY1, DM_PLY2, _______, _______, \
    _______,                          _______
  ),
};

M keyboards/xiudi/xd75/keymaps/colinta/keymap.c => keyboards/xiudi/xd75/keymaps/colinta/keymap.c +12 -12
@@ 46,8 46,8 @@
// "MMENU" is a macro for "CMD+SPC" (aka Spotlight/Alfred)
#define MMENU LGUI(KC_SPC)
#define _____ KC_TRNS
#define MM_0 DYN_MACRO_PLAY1
#define MM_1 DYN_MACRO_PLAY2
#define MM_0 DM_PLY1
#define MM_1 DM_PLY2

// tap-hold settings
#define LONGPRESS_DELAY 250


@@ 114,8 114,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */

  [LAYER_RECORD] = LAYOUT(
    _____, _____, _____, _____, _____, _____, DYN_REC_STOP, DYN_REC_STOP, _____, _____, _____, _____, _____, _____, _____,
    _____, _____, _____, _____, _____, _____, DYN_REC_STOP, DYN_REC_STOP, _____, _____, _____, _____, _____, _____, _____,
    _____, _____, _____, _____, _____, _____, DM_RSTP, DM_RSTP, _____, _____, _____, _____, _____, _____, _____,
    _____, _____, _____, _____, _____, _____, DM_RSTP, DM_RSTP, _____, _____, _____, _____, _____, _____, _____,
    _____, _____, _____, _____, _____, _____,    _____,        _____,     _____, _____, _____, _____, _____, _____, _____,
    _____, _____, _____, _____, _____, _____,    _____,        _____,     _____, _____, _____, _____, _____, _____, _____,
    _____, _____, _____, _____, _____, _____,    _____,        _____,     _____, _____, _____, _____, _____, _____, _____


@@ 158,7 158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */

  [LAYER_FN] = LAYOUT(
    GOTO_CM, GOTO_QW, KC_NO, KC_NO, KC_NO, KC_NO, DYN_REC_START1, DYN_REC_START2, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
    GOTO_CM, GOTO_QW, KC_NO, KC_NO, KC_NO, KC_NO, DM_REC1, DM_REC2, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
    KC_NO,   KC_NO,   KC_NO, KC_NO, KC_NO, KC_NO,     KC_NO,          KC_NO,      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
    KC_NO,   KC_NO,   KC_NO, KC_NO, KC_NO, KC_NO,     KC_NO,          KC_NO,      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
    KC_NO,   KC_NO,   KC_NO, KC_NO, KC_NO, KC_NO,     KC_NO,          KC_NO,      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,


@@ 221,7 221,7 @@ bool did_record_m1 = false;
bool did_record_m2 = false;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    bool try_dynamic_macro = true;
    if ((keycode == DYN_MACRO_PLAY1 && !did_record_m1) || (keycode == DYN_MACRO_PLAY2 && !did_record_m2)) {
    if ((keycode == QK_DYNAMIC_MACRO_PLAY_1 && !did_record_m1) || (keycode == QK_DYNAMIC_MACRO_PLAY_2 && !did_record_m2)) {
        try_dynamic_macro = false;
    }
    else if (keycode == DM_CLEAR) {


@@ 231,18 231,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    }

    if (try_dynamic_macro && !process_record_dynamic_macro(keycode, record)) {
        if (keycode == DYN_MACRO_PLAY1) {
        if (keycode == QK_DYNAMIC_MACRO_PLAY_1) {
                did_record_m1 = true;
        }

        if (keycode == DYN_MACRO_PLAY2) {
        if (keycode == QK_DYNAMIC_MACRO_PLAY_2) {
                did_record_m2 = true;
        }

        if (keycode == DYN_REC_START1 || keycode == DYN_REC_START2) {
        if (keycode == QK_DYNAMIC_MACRO_RECORD_START_1 || keycode == QK_DYNAMIC_MACRO_RECORD_START_2) {
                layer_move(LAYER_RECORD);
        }
        else if (keycode == DYN_REC_STOP) {
        else if (keycode == QK_DYNAMIC_MACRO_RECORD_STOP) {
                layer_move(LAYER_COLEMAK);
        }



@@ 250,10 250,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    }

    switch (keycode) {
    case DYN_MACRO_PLAY1:
    case QK_DYNAMIC_MACRO_PLAY_1:
        SEND_STRING(SENDSTRING_MM0);
        return false;
    case DYN_MACRO_PLAY2:
    case QK_DYNAMIC_MACRO_PLAY_2:
        SEND_STRING(SENDSTRING_MM1);
        return false;
    case MM_2:

M keyboards/xiudi/xd75/keymaps/colinta/readme.md => keyboards/xiudi/xd75/keymaps/colinta/readme.md +1 -1
@@ 23,7 23,7 @@ I've implemented my own "tap/hold" feature, identical in spirit to "Space Cadet"

The function layer is only to switch to Qwerty (so other people can use this keyboard - also turns off sticky keys) and to start recording keypresses.

I implemented "stop recording" in a unique way; starting a macro recording sends the keyboard layer to one that has all the macro keys assigned to `DYN_REC_STOP`, and restores the layer to the default when recording is stopped.
I implemented "stop recording" in a unique way; starting a macro recording sends the keyboard layer to one that has all the macro keys assigned to `DM_RSTP`, and restores the layer to the default when recording is stopped.

I wish Dynamic Macros supported more, because I'd like to record a third macro in the MACRO slot instead of hardcoding it.  I'm using these to store some passwords.


M keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c => keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c +4 -4
@@ 40,17 40,17 @@ void macro_tog_key( qk_tap_dance_state_t *state, void *user_data ) {

  keyrecord_t kr;
  kr.event.pressed = false;
  uint16_t action = DYN_REC_STOP;
  uint16_t action = QK_DYNAMIC_MACRO_RECORD_STOP;

  if ( state->count == 1 ) {
    action = DYN_MACRO_PLAY1;
    action = QK_DYNAMIC_MACRO_PLAY_1;
  }
  else if ( state->count == 2 ) {
    action = DYN_REC_STOP;
    action = QK_DYNAMIC_MACRO_RECORD_STOP;
    kr.event.pressed = true;
  }
  else if ( state->count == 3 ) {
    action = DYN_REC_START1;
    action = QK_DYNAMIC_MACRO_RECORD_START_1;
  }

  process_record_dynamic_macro( action, &kr );

M keyboards/ymdk/melody96/keymaps/crilith/keymap.c => keyboards/ymdk/melody96/keymaps/crilith/keymap.c +3 -3
@@ 7,9 7,9 @@ enum custom_keycodes {

#include "dynamic_macro.h"

#define KC_REC DYN_REC_START1
#define KC_DONE DYN_REC_STOP
#define KC_PLAY DYN_MACRO_PLAY1
#define KC_REC DM_REC1
#define KC_DONE DM_RSTP
#define KC_PLAY DM_PLY1

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {


M layouts/community/ergodox/colemak_code_friendly/keymap.c => layouts/community/ergodox/colemak_code_friendly/keymap.c +13 -13
@@ 103,17 103,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  KC_MUTE, KC_VOLD,    KC_VOLU, KC_TRNS,  KC_TRNS,

                                                       KC_TRNS,   KC_TRNS,
                                                           DYN_REC_START1,
                                        KC_TRNS, KC_TRNS, DYN_MACRO_PLAY1,
                                                           DM_REC1,
                                        KC_TRNS, KC_TRNS, DM_PLY1,
  /* right hand */
  KC_TRNS, KC_TRNS,    KC_ASTR, KC_LPRN,  KC_RPRN,  KC_MINS,  KC_TRNS,
  KC_EQL,  M_LAMBDA,   KC_7,    KC_8,     KC_9,     KC_PLUS,  KC_TRNS,
           M_POINER,   KC_4,    KC_5,     KC_6,     KC_0,     KC_TRNS,
  KC_ENT,  M_NOT_EQL,  KC_1,    KC_2,     KC_3,     KC_TRNS,  KC_TRNS,
                       KC_0,    KC_COMM,  KC_DOT,   KC_TRNS,  KC_TRNS,
  KC_TRNS, DYN_REC_STOP,
  DYN_REC_START2,
  DYN_MACRO_PLAY2, KC_TRNS, KC_TRNS
  KC_TRNS, DM_RSTP,
  DM_REC2,
  DM_PLY2, KC_TRNS, KC_TRNS
),
/* Keymap 2: Left side -> LAYER_NUM,                             Right side -> Shift + LAYER_BASE
 *


@@ 145,8 145,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  KC_MUTE, KC_VOLD,    KC_VOLU, KC_TRNS,  KC_TRNS,

                                                       KC_TRNS,   KC_TRNS,
                                                           DYN_REC_START1,
                                        KC_TRNS, KC_TRNS, DYN_MACRO_PLAY1,
                                                           DM_REC1,
                                        KC_TRNS, KC_TRNS, DM_PLY1,
  /* right hand */
  TG(1),          KC_AMPR,       KC_ASTR,       KC_LPRN,    KC_RPRN,    S(KC_MINS),  S(KC_BSPC),
  KC_UNDS,        S(KC_J),       S(KC_L),       S(KC_U),    S(KC_Y),    S(KC_SCLN),  S(KC_BSLS),


@@ 195,9 195,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
           M_POINER,    KC_4,    KC_5,     KC_6,     KC_0,     KC_TRNS,
  KC_ENT,  M_NOT_EQL,   KC_1,    KC_2,     KC_3,     KC_TRNS,  KC_TRNS,
                        KC_0,    KC_COMM,  KC_DOT,   KC_TRNS,  KC_TRNS,
  KC_TRNS, DYN_REC_STOP,
  DYN_REC_START2,
  DYN_MACRO_PLAY2, KC_TRNS, KC_TRNS
  KC_TRNS, DM_RSTP,
  DM_REC2,
  DM_PLY2, KC_TRNS, KC_TRNS
),
};



@@ 206,13 206,13 @@ static bool recording_dynamic_macro;
static bool process_record_dynamic_macro_wrapper(uint16_t keycode, keyrecord_t *record) {
  switch (keycode) {
    /* detect dynamic macro recording state */
    case DYN_REC_START1:
    case DYN_REC_START2:
    case QK_DYNAMIC_MACRO_RECORD_START_1:
    case QK_DYNAMIC_MACRO_RECORD_START_2:
      if (record->event.pressed) {
        recording_dynamic_macro = true;
      }
      break;
    case DYN_REC_STOP:
    case QK_DYNAMIC_MACRO_RECORD_STOP:
      if (record->event.pressed) {
        recording_dynamic_macro = false;
      }

M layouts/community/ergodox/qwerty_code_friendly/keymap.c => layouts/community/ergodox/qwerty_code_friendly/keymap.c +8 -8
@@ 282,11 282,11 @@ enum custom_keycodes {
#  include "dynamic_macro.h"
#else
   /* avoid ifdef's in keymap */
#  define DYN_REC_START1 KC_TRNS
#  define DYN_REC_START2 KC_TRNS
#  define DYN_MACRO_PLAY1 KC_TRNS
#  define DYN_MACRO_PLAY2 KC_TRNS
#  define DYN_REC_STOP KC_TRNS
#  define DM_REC1 KC_TRNS
#  define DM_REC2 KC_TRNS
#  define DM_PLY1 KC_TRNS
#  define DM_PLY2 KC_TRNS
#  define DM_RSTP KC_TRNS
#endif

#ifdef CFQ_USE_MOMENTARY_LAYER_KEYS


@@ 391,9 391,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M_ARROW_RMINUS,
  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M_BRACKET_IN_ANG, M_BRACKET_IN_BRC,
  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
                                               DYN_REC_START1,   DYN_REC_START2,
                              K80(L1K0),       K80(L1K1),        DYN_MACRO_PLAY1,
                              DYN_REC_STOP,    KC_TRNS,          DYN_MACRO_PLAY2,
                                               DM_REC1,          DM_REC2,
                              K80(L1K0),       K80(L1K1),        DM_PLY1,
                              DM_RSTP,         KC_TRNS,          DM_PLY2,
  /* right hand */
  M_BRACKET_OUT_CBR, KC_TRNS,           KC_NUM,  KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,  KC_TRNS,
  M_BRACKET_OUT_PRN, M_ARROW_LEQL,      KC_KP_7, KC_KP_8,     KC_KP_9,        KC_KP_PLUS,  KC_TRNS,

M layouts/community/ortho_4x12/ajp10304/keymap.c => layouts/community/ortho_4x12/ajp10304/keymap.c +3 -3
@@ 121,9 121,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * `------------------------------------------------------------------------------------'
 */
[_ADJUST] = LAYOUT_ortho_4x12(
  M_CUSTOM, QK_BOOT, QWERTY,  BL_ON,   BL_OFF,  DYN_REC_START1,  DYN_REC_START2,  _______,             _______,           _______,              _______,  KC_DEL  ,
  KC_CAPS,  RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE,       KC_AUDIO_VOL_UP,   KC_MEDIA_PLAY_PAUSE,  _______,  QWERTY  ,
  TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP,    DYN_REC_STOP,    KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK,  _______,  COLEMAK ,
  M_CUSTOM, QK_BOOT, QWERTY,  BL_ON,   BL_OFF,  DM_REC1,         DM_REC2,         _______,             _______,           _______,              _______,  KC_DEL  ,
  KC_CAPS,  RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DM_PLY1,         DM_PLY2,         KC_AUDIO_MUTE,       KC_AUDIO_VOL_UP,   KC_MEDIA_PLAY_PAUSE,  _______,  QWERTY  ,
  TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DM_RSTP,         DM_RSTP,         KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK,  _______,  COLEMAK ,
  _______,  _______, _______, _______, _______, _______,         _______,         _______,             _______,           _______,              _______,  _______
),


M quantum/dynamic_macro.h => quantum/dynamic_macro.h +8 -8
@@ 129,7 129,7 @@ void dynamic_macro_record_end(keyrecord_t *macro_buffer, keyrecord_t *macro_poin
    dynamic_macro_led_blink();

    /* Do not save the keys being held when stopping the recording,
     * i.e. the keys used to access the layer DYN_REC_STOP is on.
     * i.e. the keys used to access the layer DM_RSTP is on.
     */
    while (macro_pointer != macro_buffer && (macro_pointer - direction)->event.pressed) {
        dprintln("dynamic macro: trimming a trailing key-down event");


@@ 202,18 202,18 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
        /* No macro recording in progress. */
        if (!record->event.pressed) {
            switch (keycode) {
                case DYN_REC_START1:
                case QK_DYNAMIC_MACRO_RECORD_START_1:
                    dynamic_macro_record_start(&macro_pointer, macro_buffer);
                    macro_id = 1;
                    return false;
                case DYN_REC_START2:
                case QK_DYNAMIC_MACRO_RECORD_START_2:
                    dynamic_macro_record_start(&macro_pointer, r_macro_buffer);
                    macro_id = 2;
                    return false;
                case DYN_MACRO_PLAY1:
                case QK_DYNAMIC_MACRO_PLAY_1:
                    dynamic_macro_play(macro_buffer, macro_end, +1);
                    return false;
                case DYN_MACRO_PLAY2:
                case QK_DYNAMIC_MACRO_PLAY_2:
                    dynamic_macro_play(r_macro_buffer, r_macro_end, -1);
                    return false;
            }


@@ 221,7 221,7 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
    } else {
        /* A macro is being recorded right now. */
        switch (keycode) {
            case DYN_REC_STOP:
            case QK_DYNAMIC_MACRO_RECORD_STOP:
                /* Stop the macro recording. */
                if (record->event.pressed) { /* Ignore the initial release
                                              * just after the recoding


@@ 237,8 237,8 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
                    macro_id = 0;
                }
                return false;
            case DYN_MACRO_PLAY1:
            case DYN_MACRO_PLAY2:
            case QK_DYNAMIC_MACRO_PLAY_1:
            case QK_DYNAMIC_MACRO_PLAY_2:
                dprintln("dynamic macro: ignoring macro play key while recording");
                return false;
            default:

M quantum/process_keycode/process_dynamic_macro.c => quantum/process_keycode/process_dynamic_macro.c +13 -13
@@ 139,7 139,7 @@ void dynamic_macro_record_end(keyrecord_t *macro_buffer, keyrecord_t *macro_poin
    dynamic_macro_record_end_user(direction);

    /* Do not save the keys being held when stopping the recording,
     * i.e. the keys used to access the layer DYN_REC_STOP is on.
     * i.e. the keys used to access the layer DM_RSTP is on.
     */
    while (macro_pointer != macro_buffer && (macro_pointer - direction)->event.pressed) {
        dprintln("dynamic macro: trimming a trailing key-down event");


@@ 212,18 212,18 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
        /* No macro recording in progress. */
        if (!record->event.pressed) {
            switch (keycode) {
                case DYN_REC_START1:
                case QK_DYNAMIC_MACRO_RECORD_START_1:
                    dynamic_macro_record_start(&macro_pointer, macro_buffer);
                    macro_id = 1;
                    return false;
                case DYN_REC_START2:
                case QK_DYNAMIC_MACRO_RECORD_START_2:
                    dynamic_macro_record_start(&macro_pointer, r_macro_buffer);
                    macro_id = 2;
                    return false;
                case DYN_MACRO_PLAY1:
                case QK_DYNAMIC_MACRO_PLAY_1:
                    dynamic_macro_play(macro_buffer, macro_end, +1);
                    return false;
                case DYN_MACRO_PLAY2:
                case QK_DYNAMIC_MACRO_PLAY_2:
                    dynamic_macro_play(r_macro_buffer, r_macro_end, -1);
                    return false;
            }


@@ 231,13 231,13 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
    } else {
        /* A macro is being recorded right now. */
        switch (keycode) {
            case DYN_REC_START1:
            case DYN_REC_START2:
            case DYN_REC_STOP:
            case QK_DYNAMIC_MACRO_RECORD_START_1:
            case QK_DYNAMIC_MACRO_RECORD_START_2:
            case QK_DYNAMIC_MACRO_RECORD_STOP:
                /* Stop the macro recording. */
                if (record->event.pressed ^ (keycode != DYN_REC_STOP)) { /* Ignore the initial release
                                                                          * just after the recording
                                                                          * starts for DYN_REC_STOP. */
                if (record->event.pressed ^ (keycode != QK_DYNAMIC_MACRO_RECORD_STOP)) { /* Ignore the initial release
                                                                                          * just after the recording
                                                                                          * starts for DM_RSTP. */
                    switch (macro_id) {
                        case 1:
                            dynamic_macro_record_end(macro_buffer, macro_pointer, +1, &macro_end);


@@ 250,8 250,8 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
                }
                return false;
#ifdef DYNAMIC_MACRO_NO_NESTING
            case DYN_MACRO_PLAY1:
            case DYN_MACRO_PLAY2:
            case QK_DYNAMIC_MACRO_PLAY_1:
            case QK_DYNAMIC_MACRO_PLAY_2:
                dprintln("dynamic macro: ignoring macro play key while recording");
                return false;
#endif

M quantum/quantum_keycodes.h => quantum/quantum_keycodes.h +10 -10
@@ 424,11 424,11 @@ enum quantum_keycodes {
    MAGIC_EE_HANDS_RIGHT,   // 5D03

    // Dynamic Macros
    DYN_REC_START1,  // 5D04
    DYN_REC_START2,  // 5D05
    DYN_REC_STOP,    // 5D06
    DYN_MACRO_PLAY1, // 5D07
    DYN_MACRO_PLAY2, // 5D08
    QK_DYNAMIC_MACRO_RECORD_START_1, // 5D04
    QK_DYNAMIC_MACRO_RECORD_START_2, // 5D05
    QK_DYNAMIC_MACRO_RECORD_STOP,    // 5D06
    QK_DYNAMIC_MACRO_PLAY_1,         // 5D07
    QK_DYNAMIC_MACRO_PLAY_2,         // 5D08

    // Joystick
    QK_JOYSTICK_BUTTON_0,  // 5D09


@@ 906,11 906,11 @@ enum quantum_keycodes {
#define MIDI_CHANNEL_MAX MI_CH16

// Dynamic Macros aliases
#define DM_REC1 DYN_REC_START1
#define DM_REC2 DYN_REC_START2
#define DM_RSTP DYN_REC_STOP
#define DM_PLY1 DYN_MACRO_PLAY1
#define DM_PLY2 DYN_MACRO_PLAY2
#define DM_REC1 QK_DYNAMIC_MACRO_RECORD_START_1
#define DM_REC2 QK_DYNAMIC_MACRO_RECORD_START_2
#define DM_RSTP QK_DYNAMIC_MACRO_RECORD_STOP
#define DM_PLY1 QK_DYNAMIC_MACRO_PLAY_1
#define DM_PLY2 QK_DYNAMIC_MACRO_PLAY_2

// Joystick aliases
#define JS_0 QK_JOYSTICK_BUTTON_0

M quantum/quantum_keycodes_legacy.h => quantum/quantum_keycodes_legacy.h +6 -0
@@ 38,6 38,12 @@
#define UC_M_WC QK_UNICODE_MODE_WINCOMPOSE
#define UC_M_EM QK_UNICODE_MODE_EMACS

#define DYN_REC_START1 QK_DYNAMIC_MACRO_RECORD_START_1
#define DYN_REC_START2 QK_DYNAMIC_MACRO_RECORD_START_2
#define DYN_REC_STOP QK_DYNAMIC_MACRO_RECORD_STOP
#define DYN_MACRO_PLAY1 QK_DYNAMIC_MACRO_PLAY_1
#define DYN_MACRO_PLAY2 QK_DYNAMIC_MACRO_PLAY_2

#define PROGRAMMABLE_BUTTON_1 QK_PROGRAMMABLE_BUTTON_1
#define PROGRAMMABLE_BUTTON_2 QK_PROGRAMMABLE_BUTTON_2
#define PROGRAMMABLE_BUTTON_3 QK_PROGRAMMABLE_BUTTON_3

M users/klackygears/tap_dances.c => users/klackygears/tap_dances.c +6 -6
@@ 7,17 7,17 @@ void macroTogKey(qk_tap_dance_state_t *state, void *user_data) {
  if (state->count == 1)
  {
    kr.event.pressed = false;
    process_record_dynamic_macro( DYN_MACRO_PLAY1, &kr );
    process_record_dynamic_macro( DM_PLY1, &kr );
  }
  else if (state->count == 2)
  {
    kr.event.pressed = true;
    process_record_dynamic_macro( DYN_REC_STOP, &kr );
    process_record_dynamic_macro( DM_RSTP, &kr );
  }
  else if (state->count == 3)
  {
    kr.event.pressed = false;
    process_record_dynamic_macro( DYN_REC_START1, &kr );
    process_record_dynamic_macro( QK_DYNAMIC_MACRO_RECORD_START_1, &kr );
  }
}



@@ 27,17 27,17 @@ void macroTogKey2(qk_tap_dance_state_t *state, void *user_data) {
  if (state->count == 1)
  {
    kr.event.pressed = false;
    process_record_dynamic_macro( DYN_MACRO_PLAY2, &kr );
    process_record_dynamic_macro( DM_PLY2, &kr );
  }
  else if (state->count == 2)
  {
    kr.event.pressed = true;
    process_record_dynamic_macro( DYN_REC_STOP, &kr );
    process_record_dynamic_macro( DM_RSTP, &kr );
  }
  else if (state->count == 3)
  {
    kr.event.pressed = false;
    process_record_dynamic_macro( DYN_REC_START2, &kr );
    process_record_dynamic_macro( DM_REC2, &kr );
  }
}
*/