qmk-dactyl-manuform-a/users/bocaj/bocaj.c

178 lines
4.1 KiB
C

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