[Keymap] New tap dance code added to userspace and keymaps (#5468)
* Adding new tap dance key * Adding new tap dance code * add code for copy/paste to tap dance * testing tap dance enums * New tap dance keycodes * Fix enums
This commit is contained in:
parent
1dda671e4a
commit
3a7816843c
4 changed files with 68 additions and 14 deletions
|
@ -1,13 +1,53 @@
|
|||
#include "stanrc85.h"
|
||||
|
||||
static td_state_t td_state;
|
||||
|
||||
__attribute__ ((weak))
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// determine the tapdance state to return
|
||||
int cur_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; } // any number higher than the maximum state value you return above
|
||||
}
|
||||
|
||||
// handle the possible states for each tapdance keycode you define:
|
||||
void ctl_copy_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
td_state = cur_dance(state);
|
||||
switch (td_state) {
|
||||
case SINGLE_TAP:
|
||||
SEND_STRING(SS_LCTRL("c"));
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
register_mods(MOD_BIT(KC_RCTL));
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
SEND_STRING(SS_LCTRL("v"));
|
||||
}
|
||||
}
|
||||
|
||||
void ctl_copy_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (td_state) {
|
||||
case SINGLE_TAP:
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
unregister_mods(MOD_BIT(KC_RCTL));
|
||||
break;
|
||||
case DOUBLE_TAP:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_WIN] = ACTION_TAP_DANCE_DOUBLE(KC_CAD, KC_LOCK),
|
||||
[TD_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_GRV)
|
||||
[TD_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_GRV),
|
||||
[TD_RCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_copy_finished, ctl_copy_reset)
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue