forked from mirrors/qmk_userspace
[Keymap] new userspace for ibnuda (#8221)
* to ease the maintenance for some boards ibnuda has. * followed ridingqwerty's suggestion on 8821. * folloing drashna's suggestion on qmk's 8221. * following drashn's suggestion on qmk's 8211
This commit is contained in:
parent
ad96e995af
commit
910d603c65
14 changed files with 433 additions and 256 deletions
83
users/ibnuda/tapdance.c
Normal file
83
users/ibnuda/tapdance.c
Normal file
|
@ -0,0 +1,83 @@
|
|||
#include "tapdance.h"
|
||||
|
||||
static td_state_t td_state;
|
||||
|
||||
void dance_dlt_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
register_code16(KC_DELT);
|
||||
} else {
|
||||
register_code16(C(KC_DELT));
|
||||
}
|
||||
}
|
||||
|
||||
void dance_dlt_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
unregister_code16(KC_DELT);
|
||||
} else {
|
||||
unregister_code16(C(KC_DELT));
|
||||
}
|
||||
}
|
||||
|
||||
void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
register_code(KC_LSFT);
|
||||
}
|
||||
register_code(KC_SCLN);
|
||||
}
|
||||
|
||||
void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
unregister_code(KC_SCLN);
|
||||
}
|
||||
|
||||
int current_dance(qk_tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
return SINGLE_TAP;
|
||||
} else {
|
||||
return SINGLE_HOLD;
|
||||
}
|
||||
}
|
||||
if (state->count == 2) {
|
||||
return DOUBLE_TAP;
|
||||
} else {
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||
td_state = current_dance(state);
|
||||
switch (td_state) {
|
||||
case SINGLE_TAP:
|
||||
register_code16(KC_ESC);
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
register_mods(MOD_BIT(KC_LSFT));
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
register_code16(KC_DELT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (td_state) {
|
||||
case SINGLE_TAP:
|
||||
unregister_code16(KC_ESC);
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
unregister_mods(MOD_BIT(KC_LSFT));
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
unregister_code16(KC_DELT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_DLT_CTLDLT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_dlt_finished, dance_dlt_reset),
|
||||
[TD_SCLN_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
|
||||
[TD_LEFT_THUMB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_tmb_finished, dance_tmb_reset),
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue