You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							178 lines
						
					
					
						
							4.1 KiB
						
					
					
				
			
		
		
	
	
							178 lines
						
					
					
						
							4.1 KiB
						
					
					
				#include "bocaj.h"
 | 
						|
#include "eeprom.h"
 | 
						|
#include "version.h"
 | 
						|
#include "tap_dances.h"
 | 
						|
 | 
						|
static uint16_t copy_paste_timer;
 | 
						|
userspace_config_t userspace_config;
 | 
						|
 | 
						|
/* *** *** *** ***  *
 | 
						|
 * Helper Functions *
 | 
						|
 * *** *** *** ***  */
 | 
						|
void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); };
 | 
						|
 | 
						|
// Add reconfigurable functions here, for keymap customization
 | 
						|
// This allows for a global, userspace functions, and continued
 | 
						|
// customization of the keymap.  Use _keymap instead of _user
 | 
						|
// functions in the keymaps
 | 
						|
__attribute__ ((weak))
 | 
						|
void matrix_init_keymap(void) {}
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
void startup_keymap(void) {}
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
void suspend_power_down_keymap(void) {}
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
void suspend_wakeup_init_keymap(void) {}
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
void matrix_scan_keymap(void) {}
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
uint32_t layer_state_set_keymap (uint32_t state) {
 | 
						|
  return state;
 | 
						|
}
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
uint32_t default_layer_state_set_keymap (uint32_t state) {
 | 
						|
  return state;
 | 
						|
}
 | 
						|
 | 
						|
__attribute__ ((weak))
 | 
						|
void led_set_keymap(uint8_t usb_led) {}
 | 
						|
 | 
						|
// Call user matrix init, set default RGB colors and then
 | 
						|
// call the keymap's init function
 | 
						|
void matrix_init_user(void) {
 | 
						|
  userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
 | 
						|
  matrix_init_keymap();
 | 
						|
}
 | 
						|
 | 
						|
void startup_user (void) {
 | 
						|
  startup_keymap();
 | 
						|
}
 | 
						|
 | 
						|
void suspend_power_down_user(void)
 | 
						|
{
 | 
						|
    suspend_power_down_keymap();
 | 
						|
}
 | 
						|
 | 
						|
void suspend_wakeup_init_user(void)
 | 
						|
{
 | 
						|
  suspend_wakeup_init_keymap();
 | 
						|
  #ifdef KEYBOARD_ergodox_ez
 | 
						|
  wait_ms(10);
 | 
						|
  #endif
 | 
						|
}
 | 
						|
 | 
						|
// No global matrix scan code, so just run keymap's matrix
 | 
						|
// scan function
 | 
						|
void matrix_scan_user(void) {
 | 
						|
  static bool has_ran_yet;
 | 
						|
  if (!has_ran_yet) {
 | 
						|
    has_ran_yet = true;
 | 
						|
    startup_user();
 | 
						|
  }
 | 
						|
 | 
						|
#ifdef TAP_DANCE_ENABLE  // Run Diablo 3 macro checking code.
 | 
						|
  run_diablo_macro_check();
 | 
						|
#endif // TAP_DANCE_ENABLE
 | 
						|
 | 
						|
  matrix_scan_keymap();
 | 
						|
}
 | 
						|
 | 
						|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
						|
  /* uint8_t default_layer = 0;
 | 
						|
  default_layer = eeconfig_read_default_layer(); */
 | 
						|
  switch (keycode) {
 | 
						|
    case JJ_COPY:
 | 
						|
      if (!record->event.pressed) {
 | 
						|
        SEND_STRING(SS_LGUI("c"));
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
      break;
 | 
						|
    case JJ_PSTE:
 | 
						|
      if (!record->event.pressed) {
 | 
						|
        SEND_STRING(SS_LGUI("v"));
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
      break;
 | 
						|
    case JJ_ARRW:
 | 
						|
      if (!record->event.pressed) {
 | 
						|
        SEND_STRING("->");
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
      break; /*
 | 
						|
    case KC_SWRK:
 | 
						|
      if (!record->event.pressed) {
 | 
						|
        set_single_persistent_default_layer(_SWRKMN);
 | 
						|
        layer_move(default_layer);
 | 
						|
        //ergodox_blink_all_leds();
 | 
						|
        //ergodox_blink_all_leds();
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
      break;
 | 
						|
    case KC_HWRK:
 | 
						|
      if (!record->event.pressed) {
 | 
						|
        set_single_persistent_default_layer(_HWRKMN);
 | 
						|
        layer_move(default_layer);
 | 
						|
        //ergodox_blink_all_leds();
 | 
						|
        //ergodox_blink_all_leds();
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
      break;
 | 
						|
    case KC_EPRM:
 | 
						|
      if (!record->event.pressed) {
 | 
						|
        //ergodox_blink_all_leds();
 | 
						|
        eeconfig_init();
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
      break;
 | 
						|
    case MC_LOCK:
 | 
						|
      if (!record->event.pressed) {
 | 
						|
        layer_move(default_layer);
 | 
						|
        SEND_STRING(SS_LCTRL(SS_LGUI("q")));
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
      break; */
 | 
						|
    case KC_DCLR:
 | 
						|
#ifdef TAP_DANCE_ENABLE
 | 
						|
      if (record->event.pressed) {
 | 
						|
        uint8_t dtime;
 | 
						|
        for (dtime = 0; dtime < 4; dtime++) {
 | 
						|
          diablo_key_time[dtime] = diablo_times[0];
 | 
						|
        }
 | 
						|
      }
 | 
						|
#endif // !TAP_DANCE_ENABLE
 | 
						|
      return false;
 | 
						|
      break;
 | 
						|
    case KC_CCCV:
 | 
						|
      if (record->event.pressed) {
 | 
						|
        copy_paste_timer = timer_read();
 | 
						|
      } else {
 | 
						|
        if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
 | 
						|
          SEND_STRING(SS_LGUI("c"));
 | 
						|
        } else {
 | 
						|
          SEND_STRING(SS_LGUI("v"));
 | 
						|
        }
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
      break;
 | 
						|
  }
 | 
						|
  return process_record_keymap(keycode, record);
 | 
						|
}
 | 
						|
 |