Merge pull request #769 from pvinis/fix/tap-dance-each-tap-restore
[tap dance] restore each_tap functionality
This commit is contained in:
		@@ -70,6 +70,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
      action->state.keycode = keycode;
 | 
			
		||||
      action->state.count++;
 | 
			
		||||
      action->state.timer = timer_read();
 | 
			
		||||
      process_tap_dance_action_on_each_tap (action);
 | 
			
		||||
 | 
			
		||||
      if (last_td && last_td != keycode) {
 | 
			
		||||
        qk_tap_dance_action_t *paction = &tap_dance_actions[last_td - QK_TAP_DANCE];
 | 
			
		||||
 
 | 
			
		||||
@@ -39,15 +39,17 @@ typedef struct
 | 
			
		||||
 | 
			
		||||
#define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) { \
 | 
			
		||||
    .fn = { NULL, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset }, \
 | 
			
		||||
    .user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 })  \
 | 
			
		||||
    .user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }),  \
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#define ACTION_TAP_DANCE_FN(user_fn) {  \
 | 
			
		||||
    .fn = { NULL, user_fn, NULL } \
 | 
			
		||||
    .fn = { NULL, user_fn, NULL }, \
 | 
			
		||||
    .user_data = NULL, \
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#define ACTION_TAP_DANCE_FN_ADVANCED(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_reset) { \
 | 
			
		||||
    .fn = { user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_reset } \
 | 
			
		||||
#define ACTION_TAP_DANCE_FN_ADVANCED(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset) { \
 | 
			
		||||
    .fn = { user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset }, \
 | 
			
		||||
    .user_data = NULL, \
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
extern qk_tap_dance_action_t tap_dance_actions[];
 | 
			
		||||
 
 | 
			
		||||
@@ -526,7 +526,7 @@ This array specifies what actions shall be taken when a tap-dance key is in acti
 | 
			
		||||
 | 
			
		||||
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
 | 
			
		||||
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
 | 
			
		||||
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function on when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
 | 
			
		||||
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function on when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
 | 
			
		||||
 | 
			
		||||
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user