~ruther/qmk_firmware

b824faca71e1db86c158a0e09f225410c1e7e0a8 — Joel Challis 1 year, 7 months ago 03848bb
Align location of tap dance keycode (#22742)

M docs/feature_tap_dance.md => docs/feature_tap_dance.md +1 -1
@@ 173,7 173,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    switch (keycode) {
        case TD(CT_CLN):  // list all tap dance keycodes with tap-hold configurations
            action = &tap_dance_actions[TD_INDEX(keycode)];
            action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];
            if (!record->event.pressed && action->state.count && !action->state.finished) {
                tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
                tap_code16(tap_hold->tap);

M quantum/process_keycode/process_tap_dance.c => quantum/process_keycode/process_tap_dance.c +3 -3
@@ 133,7 133,7 @@ bool preprocess_tap_dance(uint16_t keycode, keyrecord_t *record) {

    if (!active_td || keycode == active_td) return false;

    action                             = &tap_dance_actions[TD_INDEX(active_td)];
    action                             = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(active_td)];
    action->state.interrupted          = true;
    action->state.interrupting_keycode = keycode;
    process_tap_dance_action_on_dance_finished(action);


@@ 154,7 154,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {

    switch (keycode) {
        case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:
            action = &tap_dance_actions[TD_INDEX(keycode)];
            action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];

            action->state.pressed = record->event.pressed;
            if (record->event.pressed) {


@@ 182,7 182,7 @@ void tap_dance_task(void) {

    if (!active_td || timer_elapsed(last_tap_time) <= GET_TAPPING_TERM(active_td, &(keyrecord_t){})) return;

    action = &tap_dance_actions[TD_INDEX(active_td)];
    action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(active_td)];
    if (!action->state.interrupted) {
        process_tap_dance_action_on_dance_finished(action);
    }

M quantum/process_keycode/process_tap_dance.h => quantum/process_keycode/process_tap_dance.h +2 -2
@@ 19,6 19,7 @@
#include <stdint.h>
#include <stdbool.h>
#include "action.h"
#include "quantum_keycodes.h"

typedef struct {
    uint16_t interrupting_keycode;


@@ 74,8 75,7 @@ typedef struct {
#define ACTION_TAP_DANCE_FN_ADVANCED_WITH_RELEASE(user_fn_on_each_tap, user_fn_on_each_release, 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_fn_on_each_release}, .user_data = NULL, }

#define TD(n) (QK_TAP_DANCE | TD_INDEX(n))
#define TD_INDEX(code) ((code)&0xFF)
#define TD_INDEX(code) QK_TAP_DANCE_GET_INDEX(code)
#define TAP_DANCE_KEYCODE(state) TD(((tap_dance_action_t *)state) - tap_dance_actions)

extern tap_dance_action_t tap_dance_actions[];

M quantum/quantum_keycodes.h => quantum/quantum_keycodes.h +4 -0
@@ 190,6 190,10 @@
#define SH_T(kc) (QK_SWAP_HANDS | ((kc)&0xFF))
#define QK_SWAP_HANDS_GET_TAP_KEYCODE(kc) ((kc)&0xFF)

// Tap dance
#define TD(i) (QK_TAP_DANCE | ((i)&0xFF))
#define QK_TAP_DANCE_GET_INDEX(kc) ((kc)&0xFF)

// MIDI aliases
#define MIDI_TONE_MIN QK_MIDI_NOTE_C_0
#define MIDI_TONE_MAX QK_MIDI_NOTE_B_5

M tests/tap_dance/examples.c => tests/tap_dance/examples.c +1 -1
@@ 83,7 83,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    switch (keycode) {
        case TD(CT_CLN):
            action = &tap_dance_actions[TD_INDEX(keycode)];
            action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];
            if (!record->event.pressed && action->state.count && !action->state.finished) {
                tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
                tap_code16(tap_hold->tap);