tap-dance: Restructure code and document in more detail (#16394)
This commit is contained in:
@@ -22,6 +22,9 @@
|
||||
#define TD_LCTL TD(BE_TD_CTL)
|
||||
#define TD_LALT TD(BE_TD_ALT)
|
||||
|
||||
#define ACTION_TAP_DANCE_MOD_TAP(mod) \
|
||||
{ .fn = {mod_tap_fn, NULL, mod_reset_fn}, .user_data = (void *)&((uint8_t){mod}), }
|
||||
|
||||
enum belak_td {
|
||||
BE_TD_GUI = 0,
|
||||
BE_TD_CTL,
|
||||
@@ -32,15 +35,9 @@ void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data);
|
||||
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data);
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[BE_TD_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
|
||||
[BE_TD_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
|
||||
[BE_TD_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
|
||||
};
|
||||
|
||||
uint16_t tap_dance_keys[] = {
|
||||
[BE_TD_GUI] = KC_LGUI,
|
||||
[BE_TD_CTL] = KC_LCTL,
|
||||
[BE_TD_ALT] = KC_LALT,
|
||||
[BE_TD_GUI] = ACTION_TAP_DANCE_MOD_TAP(KC_LGUI),
|
||||
[BE_TD_CTL] = ACTION_TAP_DANCE_MOD_TAP(KC_LCTL),
|
||||
[BE_TD_ALT] = ACTION_TAP_DANCE_MOD_TAP(KC_LALT),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
@@ -74,7 +71,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (state->count) {
|
||||
case 1:
|
||||
register_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
|
||||
uint8_t *mod = (uint8_t *)user_data;
|
||||
register_mods(MOD_BIT(*mod));
|
||||
send_keyboard_report();
|
||||
break;
|
||||
case 2:
|
||||
@@ -90,8 +88,9 @@ void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
|
||||
}
|
||||
|
||||
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data) {
|
||||
uint8_t *mod = (uint8_t *)user_data;
|
||||
layer_off(_L1);
|
||||
layer_off(_L2);
|
||||
unregister_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
|
||||
unregister_mods(MOD_BIT(*mod));
|
||||
send_keyboard_report();
|
||||
}
|
||||
|
Reference in New Issue
Block a user