1
0
Fork 0

Keymap: Refactor edvorakjp user library (#4480)

* Refactor edvorakjp user library

* add tap dance support

* update keymaps

* edvorakjp: add SWAP_SCLN option

* fix behavior of SWAP_SCLN
This commit is contained in:
epaew 2018-11-27 02:50:45 +09:00 committed by Drashna Jaelre
parent 0031e46191
commit f3ffd6ad50
14 changed files with 406 additions and 255 deletions

View file

@ -0,0 +1,71 @@
#include "edvorakjp.h"
#include "process_keycode/process_tap_dance.h"
enum tap_state {
NONE = 0,
SINGLE_TAP = 1,
DOUBLE_TAP = 2,
HOLD
};
static int td_status_lower = NONE;
static int td_status_raise = NONE;
int cur_dance(qk_tap_dance_state_t *state) {
if (state->interrupted || !state->pressed) {
return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP;
} else {
return HOLD;
}
}
void td_lower_finished(qk_tap_dance_state_t *state, void *user_data) {
td_status_lower = cur_dance(state);
switch(td_status_lower) {
case SINGLE_TAP:
set_japanese_mode(false);
register_code(KC_ESC);
break;
case DOUBLE_TAP:
set_japanese_mode(false);
break;
case HOLD:
break;
}
layer_on(_LOWER);
}
void td_lower_reset(qk_tap_dance_state_t *state, void *user_data) {
if (td_status_lower == SINGLE_TAP) {
unregister_code(KC_ESC);
}
layer_off(_LOWER);
td_status_lower = NONE;
}
void td_raise_finished(qk_tap_dance_state_t *state, void *user_data) {
td_status_raise = cur_dance(state);
switch(td_status_raise) {
case SINGLE_TAP:
case DOUBLE_TAP:
set_japanese_mode(true);
break;
case HOLD:
break;
}
layer_on(_RAISE);
}
void td_raise_reset(qk_tap_dance_state_t *state, void *user_data) {
layer_off(_RAISE);
td_status_raise = NONE;
}
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(
NULL, td_lower_finished, td_lower_reset, TAPPING_TERM * 1.5
),
[TD_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(
NULL, td_raise_finished, td_raise_reset, TAPPING_TERM * 1.5
)
};