tap dance for some layers. one tap sysctl, two taps mouse.

This commit is contained in:
Pavlos Vinieratos 2016-12-09 16:01:11 +01:00
parent 063ade6bb5
commit 9a59fee667

View File

@ -22,6 +22,7 @@ enum {
// tap dance // tap dance
TD_FLSH, // flash keyboard TD_FLSH, // flash keyboard
TD_LAYR, // SYSCTL and MOUSE layer switch
}; };
// application selection // application selection
@ -61,9 +62,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,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
,TG(BEGIN) ,TG(QWERTY) ,TG(BEGIN) ,TD(TD_LAYR)
,TG(CARPALX) ,TG(MOUSE)
,KC_BSPC ,KC_LSFT ,TG(SYSCTL) ,KC_BSPC ,KC_LSFT ,TD(TD_LAYR)
,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
@ -444,6 +445,31 @@ void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
ergodox_right_led_3_off(); ergodox_right_led_3_off();
} }
// SYSCTL on first tap, MOUSE ON second tap
void layers_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
uint8_t layer = biton32(layer_state);
switch(state->count) {
case 1:
switch(layer) {
case SYSCTL:
layer_off(SYSCTL);
break;
case MOUSE:
layer_off(MOUSE);
break;
default:
layer_on(SYSCTL);
break;
}
break;
case 2:
layer_on(MOUSE);
break;
}
}
qk_tap_dance_action_t tap_dance_actions[] = { qk_tap_dance_action_t tap_dance_actions[] = {
[TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ), [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
[TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ),
}; };