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
			|   
											7 years ago
										 | #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); | ||
|  | } | ||
|  | 
 |