#include QMK_KEYBOARD_H #include "tap_dance.h" #include "custom_keycodes.h" // Home row modifiers (refer to keymap.c for primary definitions) #define HM_A LGUI_T(KC_A) #define HM_S LALT_T(KC_S) #define HM_D LCTL_T(KC_D) #define HM_F LSFT_T(KC_F) #define HM_J RSFT_T(KC_J) #define HM_K RCTL_T(KC_K) #define HM_L LALT_T(KC_L) #define HM_SCLN RGUI_T(KC_SCLN) bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { switch (keycode) { case DV_ARR: SEND_STRING("=>"); break; case DV_CMNT: SEND_STRING(SS_LCTL("kc")); break; case DV_UNCMT: SEND_STRING(SS_LCTL("ku")); break; case DV_REFS: SEND_STRING(SS_LCTL("kr")); break; case DV_SELLN: tap_code16(KC_HOME); tap_code16(KC_HOME); tap_code16(S(KC_END)); break; case WI_MAX: tap_code16(A(KC_SPC)); tap_code16(S(KC_X)); break; case KVM_PREV: tap_code16(KC_RCTL); wait_ms(50); tap_code16(KC_RCTL); wait_ms(50); tap_code16(KC_PGUP); break; case KVM_NEXT: tap_code16(KC_RCTL); wait_ms(50); tap_code16(KC_RCTL); wait_ms(50); tap_code16(KC_PGDN); break; } } return true; } // Per-key tapping term optimization uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case TD_J_BRACES: case TD_K_PARENS: return 180; case TD_L_BRACKETS: return 220; case TD_SC_ANGLES: return 200; case HM_F: case HM_J: return 180; case HM_A: case HM_SCLN: return 250; default: return TAPPING_TERM; } }