qmk_userspace/keyboards/crkbd/rev1/keymaps/pones/macros.c
2025-08-29 12:34:11 -06:00

70 lines
No EOL
1.7 KiB
C

#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;
}
}