70 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			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;
 | 
						|
    }
 | 
						|
} |