diff options
Diffstat (limited to 'moonlander_programmer-dvorak_source/keymap.c')
-rw-r--r-- | moonlander_programmer-dvorak_source/keymap.c | 448 |
1 files changed, 448 insertions, 0 deletions
diff --git a/moonlander_programmer-dvorak_source/keymap.c b/moonlander_programmer-dvorak_source/keymap.c new file mode 100644 index 0000000..acacdc4 --- /dev/null +++ b/moonlander_programmer-dvorak_source/keymap.c @@ -0,0 +1,448 @@ +#include QMK_KEYBOARD_H +#include "version.h" +#include "keymap_german.h" +#include "keymap_nordic.h" +#include "keymap_french.h" +#include "keymap_spanish.h" +#include "keymap_hungarian.h" +#include "keymap_swedish.h" +#include "keymap_br_abnt2.h" +#include "keymap_canadian_multilingual.h" +#include "keymap_german_ch.h" +#include "keymap_jp.h" +#include "keymap_korean.h" +#include "keymap_bepo.h" +#include "keymap_italian.h" +#include "keymap_slovenian.h" +#include "keymap_lithuanian_azerty.h" +#include "keymap_danish.h" +#include "keymap_norwegian.h" +#include "keymap_portuguese.h" +#include "keymap_contributions.h" +#include "keymap_czech.h" +#include "keymap_romanian.h" +#include "keymap_russian.h" +#include "keymap_uk.h" +#include "keymap_estonian.h" +#include "keymap_belgian.h" +#include "keymap_us_international.h" + +#define KC_MAC_UNDO LGUI(KC_Z) +#define KC_MAC_CUT LGUI(KC_X) +#define KC_MAC_COPY LGUI(KC_C) +#define KC_MAC_PASTE LGUI(KC_V) +#define KC_PC_UNDO LCTL(KC_Z) +#define KC_PC_CUT LCTL(KC_X) +#define KC_PC_COPY LCTL(KC_C) +#define KC_PC_PASTE LCTL(KC_V) +#define ES_LESS_MAC KC_GRAVE +#define ES_GRTR_MAC LSFT(KC_GRAVE) +#define ES_BSLS_MAC ALGR(KC_6) +#define NO_PIPE_ALT KC_GRAVE +#define NO_BSLS_ALT KC_EQUAL +#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc) +#define BP_NDSH_MAC ALGR(KC_8) +#define MOON_LED_LEVEL LED_LEVEL + +enum custom_keycodes { + RGB_SLD = ML_SAFE_RANGE, +}; + + +enum tap_dance_codes { + DANCE_0, + DANCE_1, + DANCE_2, + DANCE_3, + DANCE_4, + DANCE_5, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_moonlander( + KC_GRAVE, KC_9, KC_7, KC_5, KC_3, KC_1, KC_HOME, KC_END, KC_0, KC_2, KC_4, KC_6, KC_8, KC_ESCAPE, + KC_BSPACE, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, TG(1), KC_EQUAL, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DELETE, + LCTL_T(KC_SLASH),KC_A, KC_O, KC_E, KC_U, KC_I, KC_PGUP, KC_PGDOWN, KC_D, KC_H, KC_T, KC_N, KC_S, LGUI_T(KC_MINUS), + KC_BSLASH, KC_QUOTE, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_TRANSPARENT, + MO(4), TO(6), KC_TRANSPARENT, KC_LEFT, KC_RIGHT, KC_HYPR, KC_MEH, KC_DOWN, KC_UP, KC_TRANSPARENT, KR_HAEN, MO(4), + LT(5,KC_SPACE), KC_TAB, KC_LGUI, LALT_T(KC_CAPSLOCK),LSFT_T(KC_ESCAPE),LT(5,KC_ENTER) + ), + [1] = LAYOUT_moonlander( + TD(DANCE_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_TRANSPARENT, KC_7, KC_8, KC_9, KC_0, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRANSPARENT, KC_F6, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRANSPARENT, + KC_LSHIFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_F7, KC_H, KC_J, KC_K, KC_L, KC_TRANSPARENT, KC_TRANSPARENT, + KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_F5, KC_B, KC_N, KC_M, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_F1, KC_F2, KC_F3, KC_SPACE, KC_F12, KC_TRANSPARENT, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRANSPARENT, + LALT_T(KC_F4), KC_ENTER, TO(2), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), + [2] = LAYOUT_moonlander( + TD(DANCE_1), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_TRANSPARENT, KC_7, KC_8, KC_9, KC_0, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TAB, KC_Q, KC_UP, KC_E, KC_R, KC_T, TO(0), KC_F6, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRANSPARENT, + KC_LSHIFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F, KC_G, OSL(7), KC_F7, KC_H, KC_J, KC_K, KC_L, KC_TRANSPARENT, KC_TRANSPARENT, + KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_F5, KC_B, KC_N, KC_M, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_F1, KC_F2, KC_F3, KC_SPACE, KC_F12, KC_TRANSPARENT, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRANSPARENT, + LALT_T(KC_F4), KC_ENTER, TO(1), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), + [3] = LAYOUT_moonlander( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRANSPARENT, KC_TRANSPARENT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TRANSPARENT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRANSPARENT, KC_TRANSPARENT, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, + KC_TRANSPARENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRANSPARENT, KC_TRANSPARENT, KC_H, KC_J, KC_K, KC_L, LT(5,KC_SCOLON),RGUI_T(KC_QUOTE), + KC_TRANSPARENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_TRANSPARENT, + KC_TRANSPARENT, TO(0), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), + [4] = LAYOUT_moonlander( + KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, KC_TRANSPARENT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRANSPARENT, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_HOME, KC_1, KC_2, KC_3, KC_ASTR, KC_F12, + KC_TRANSPARENT, KC_CIRC, KC_DLR, KC_LPRN, KC_RPRN, KC_ASTR, KC_TRANSPARENT, KC_TRANSPARENT, KC_END, KC_4, KC_5, KC_6, KC_PLUS, KC_MINUS, + KC_TRANSPARENT, KC_PERC, KC_AMPR, KC_LBRACKET, KC_RBRACKET, KC_HASH, KC_AMPR, KC_7, KC_8, KC_9, KC_BSLASH, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_EQUAL, KC_TRANSPARENT, KC_TRANSPARENT, KC_0, KC_DOT, KC_DELETE, KC_EQUAL, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, LALT(KC_PSCREEN),KC_TRANSPARENT, KC_TRANSPARENT + ), + [5] = LAYOUT_moonlander( + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_WH_LEFT, KC_MS_UP, KC_MS_WH_RIGHT, KC_MS_WH_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PREV_TRACK,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_TRANSPARENT, KC_TRANSPARENT, TD(DANCE_2), TD(DANCE_3), TD(DANCE_4), TD(DANCE_5), KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_MUTE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_HOME, KC_END, KC_TRANSPARENT, KC_TRANSPARENT, KC_PGDOWN, KC_PGUP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_MS_BTN1, KC_MS_BTN2, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PLAY_PAUSE + ), + [6] = LAYOUT_moonlander( + KC_TRANSPARENT, MU_ON, MU_OFF, MU_TOG, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, DYN_REC_START1, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RESET, + AU_ON, RGB_HUI, RGB_MOD, TOGGLE_LAYER_COLOR,RGB_SPI, RGB_VAI, KC_BRIGHTNESS_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + AU_OFF, RGB_HUD, RGB_SLD, RGB_TOG, RGB_SPD, RGB_VAD, KC_BRIGHTNESS_DOWN, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + TO(0), KC_TRANSPARENT, TO(1), TO(2), TO(3), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, WEBUSB_PAIR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), +}; + +extern bool g_suspend_state; +extern rgb_config_t rgb_matrix_config; + +void keyboard_post_init_user(void) { + rgb_matrix_enable(); +} + +const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = { + [1] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {255,220,201}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [2] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [3] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [4] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {31,255,255}, {31,255,255}, {31,255,255}, {0,0,0}, {0,0,0}, {31,255,255}, {31,255,255}, {31,255,255}, {0,0,0}, {0,0,0}, {31,255,255}, {31,255,255}, {31,255,255}, {31,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [5] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {195,61,255}, {0,0,0}, {0,0,0}, {0,0,0}, {195,61,255}, {195,61,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {195,61,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {195,61,255}, {195,61,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {50,153,244}, {50,153,244}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {154,86,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {154,86,255}, {0,0,0}, {0,0,0}, {0,0,0}, {50,153,244}, {50,153,244}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,183,238}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [6] = { {0,0,0}, {32,177,198}, {32,177,198}, {0,0,255}, {0,0,0}, {32,176,255}, {32,176,255}, {32,176,255}, {0,0,0}, {251,29,239}, {10,225,255}, {10,225,255}, {10,225,255}, {255,220,201}, {0,0,0}, {243,222,234}, {243,222,234}, {243,222,234}, {205,255,255}, {0,0,0}, {0,0,0}, {85,203,158}, {85,203,158}, {250,159,255}, {0,0,0}, {0,0,0}, {134,255,213}, {134,255,213}, {0,0,0}, {0,0,0}, {134,247,235}, {134,247,235}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {8,224,207}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {105,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + +}; + +void set_layer_color(int layer) { + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + HSV hsv = { + .h = pgm_read_byte(&ledmap[layer][i][0]), + .s = pgm_read_byte(&ledmap[layer][i][1]), + .v = pgm_read_byte(&ledmap[layer][i][2]), + }; + if (!hsv.h && !hsv.s && !hsv.v) { + rgb_matrix_set_color( i, 0, 0, 0 ); + } else { + RGB rgb = hsv_to_rgb( hsv ); + float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; + rgb_matrix_set_color( i, f * rgb.r, f * rgb.g, f * rgb.b ); + } + } +} + +void rgb_matrix_indicators_user(void) { + if (g_suspend_state || keyboard_config.disable_layer_led) { return; } + switch (biton32(layer_state)) { + case 1: + set_layer_color(1); + break; + case 2: + set_layer_color(2); + break; + case 3: + set_layer_color(3); + break; + case 4: + set_layer_color(4); + break; + case 5: + set_layer_color(5); + break; + case 6: + set_layer_color(6); + break; + default: + if (rgb_matrix_get_flags() == LED_FLAG_NONE) + rgb_matrix_set_color_all(0, 0, 0); + break; + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_SLD: + if (record->event.pressed) { + rgblight_mode(1); + } + return false; + } + return true; +} + +typedef struct { + bool is_press_action; + uint8_t step; +} tap; + +enum { + SINGLE_TAP = 1, + SINGLE_HOLD, + DOUBLE_TAP, + DOUBLE_HOLD, + DOUBLE_SINGLE_TAP, + MORE_TAPS +}; + +static tap dance_state[6]; + +uint8_t dance_step(qk_tap_dance_state_t *state); + +uint8_t dance_step(qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) return SINGLE_TAP; + else return SINGLE_HOLD; + } else if (state->count == 2) { + if (state->interrupted) return DOUBLE_SINGLE_TAP; + else if (state->pressed) return DOUBLE_HOLD; + else return DOUBLE_TAP; + } + return MORE_TAPS; +} + + +void on_dance_0(qk_tap_dance_state_t *state, void *user_data); +void dance_0_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_0_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_0(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_ESCAPE); + tap_code16(KC_ESCAPE); + tap_code16(KC_ESCAPE); + } + if(state->count > 3) { + tap_code16(KC_ESCAPE); + } +} + +void dance_0_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[0].step = dance_step(state); + switch (dance_state[0].step) { + case SINGLE_TAP: register_code16(KC_ESCAPE); break; + case SINGLE_HOLD: register_code16(KC_GRAVE); break; + case DOUBLE_TAP: register_code16(KC_ESCAPE); register_code16(KC_ESCAPE); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_ESCAPE); register_code16(KC_ESCAPE); + } +} + +void dance_0_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[0].step) { + case SINGLE_TAP: unregister_code16(KC_ESCAPE); break; + case SINGLE_HOLD: unregister_code16(KC_GRAVE); break; + case DOUBLE_TAP: unregister_code16(KC_ESCAPE); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_ESCAPE); break; + } + dance_state[0].step = 0; +} +void on_dance_1(qk_tap_dance_state_t *state, void *user_data); +void dance_1_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_1_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_1(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_ESCAPE); + tap_code16(KC_ESCAPE); + tap_code16(KC_ESCAPE); + } + if(state->count > 3) { + tap_code16(KC_ESCAPE); + } +} + +void dance_1_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[1].step = dance_step(state); + switch (dance_state[1].step) { + case SINGLE_TAP: register_code16(KC_ESCAPE); break; + case SINGLE_HOLD: register_code16(KC_GRAVE); break; + case DOUBLE_TAP: register_code16(KC_ESCAPE); register_code16(KC_ESCAPE); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_ESCAPE); register_code16(KC_ESCAPE); + } +} + +void dance_1_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[1].step) { + case SINGLE_TAP: unregister_code16(KC_ESCAPE); break; + case SINGLE_HOLD: unregister_code16(KC_GRAVE); break; + case DOUBLE_TAP: unregister_code16(KC_ESCAPE); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_ESCAPE); break; + } + dance_state[1].step = 0; +} +void on_dance_2(qk_tap_dance_state_t *state, void *user_data); +void dance_2_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_2_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_2(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_LEFT); + tap_code16(KC_LEFT); + tap_code16(KC_LEFT); + } + if(state->count > 3) { + tap_code16(KC_LEFT); + } +} + +void dance_2_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[2].step = dance_step(state); + switch (dance_state[2].step) { + case SINGLE_TAP: register_code16(KC_LEFT); break; + case SINGLE_HOLD: register_code16(LCTL(KC_LEFT)); break; + case DOUBLE_TAP: register_code16(LGUI(KC_LEFT)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_LEFT); register_code16(KC_LEFT); + } +} + +void dance_2_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[2].step) { + case SINGLE_TAP: unregister_code16(KC_LEFT); break; + case SINGLE_HOLD: unregister_code16(LCTL(KC_LEFT)); break; + case DOUBLE_TAP: unregister_code16(LGUI(KC_LEFT)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_LEFT); break; + } + dance_state[2].step = 0; +} +void on_dance_3(qk_tap_dance_state_t *state, void *user_data); +void dance_3_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_3_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_3(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_DOWN); + tap_code16(KC_DOWN); + tap_code16(KC_DOWN); + } + if(state->count > 3) { + tap_code16(KC_DOWN); + } +} + +void dance_3_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[3].step = dance_step(state); + switch (dance_state[3].step) { + case SINGLE_TAP: register_code16(KC_DOWN); break; + case SINGLE_HOLD: register_code16(KC_DOWN); break; + case DOUBLE_TAP: register_code16(LGUI(KC_DOWN)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_DOWN); register_code16(KC_DOWN); + } +} + +void dance_3_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[3].step) { + case SINGLE_TAP: unregister_code16(KC_DOWN); break; + case SINGLE_HOLD: unregister_code16(KC_DOWN); break; + case DOUBLE_TAP: unregister_code16(LGUI(KC_DOWN)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_DOWN); break; + } + dance_state[3].step = 0; +} +void on_dance_4(qk_tap_dance_state_t *state, void *user_data); +void dance_4_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_4_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_4(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_UP); + tap_code16(KC_UP); + tap_code16(KC_UP); + } + if(state->count > 3) { + tap_code16(KC_UP); + } +} + +void dance_4_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[4].step = dance_step(state); + switch (dance_state[4].step) { + case SINGLE_TAP: register_code16(KC_UP); break; + case SINGLE_HOLD: register_code16(KC_UP); break; + case DOUBLE_TAP: register_code16(LGUI(KC_UP)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_UP); register_code16(KC_UP); + } +} + +void dance_4_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[4].step) { + case SINGLE_TAP: unregister_code16(KC_UP); break; + case SINGLE_HOLD: unregister_code16(KC_UP); break; + case DOUBLE_TAP: unregister_code16(LGUI(KC_UP)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_UP); break; + } + dance_state[4].step = 0; +} +void on_dance_5(qk_tap_dance_state_t *state, void *user_data); +void dance_5_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_5_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_5(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_RIGHT); + tap_code16(KC_RIGHT); + tap_code16(KC_RIGHT); + } + if(state->count > 3) { + tap_code16(KC_RIGHT); + } +} + +void dance_5_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[5].step = dance_step(state); + switch (dance_state[5].step) { + case SINGLE_TAP: register_code16(KC_RIGHT); break; + case SINGLE_HOLD: register_code16(LCTL(KC_RIGHT)); break; + case DOUBLE_TAP: register_code16(LGUI(KC_RIGHT)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_RIGHT); register_code16(KC_RIGHT); + } +} + +void dance_5_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[5].step) { + case SINGLE_TAP: unregister_code16(KC_RIGHT); break; + case SINGLE_HOLD: unregister_code16(LCTL(KC_RIGHT)); break; + case DOUBLE_TAP: unregister_code16(LGUI(KC_RIGHT)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_RIGHT); break; + } + dance_state[5].step = 0; +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [DANCE_0] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_0, dance_0_finished, dance_0_reset), + [DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_1, dance_1_finished, dance_1_reset), + [DANCE_2] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_2, dance_2_finished, dance_2_reset), + [DANCE_3] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_3, dance_3_finished, dance_3_reset), + [DANCE_4] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_4, dance_4_finished, dance_4_reset), + [DANCE_5] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_5, dance_5_finished, dance_5_reset), +}; + |