#include "tominabox1.h" #ifdef KEYBOARD_lazydesigners_dimple #ifdef RGBLIGHT_ENABLE __attribute__ ((weak)) void keyboard_post_init_keymap(void) {} void keyboard_post_init_user(void) { // sets the backlighting to come on upon successful load then turn off rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom(RGB_RED); rgblight_mode_noeeprom(0); wait_ms(700); rgblight_disable_noeeprom(); } #endif // RGBLIGHT #endif // Dimple #ifdef RGB_MATRIX_ENABLE void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type); static bool is_suspended; static bool rgb_matrix_enabled; __attribute__ ((weak)) void suspend_power_down_keymap(void) {} void suspend_power_down_user(void) { rgb_matrix_set_suspend_state(true); if (!is_suspended) { is_suspended = true; rgb_matrix_enabled = (bool)rgb_matrix_config.enable; rgb_matrix_disable_noeeprom(); } } __attribute__ ((weak)) void suspend_wakeup_init_keymap(void) {} void suspend_wakeup_init_user(void) { rgb_matrix_set_suspend_state(false); is_suspended = false; if (rgb_matrix_enabled) { rgb_matrix_enable_noeeprom(); } } # include "lib/lib8tion/lib8tion.h" extern led_config_t g_led_config; void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) { HSV hsv = {hue, sat, val}; if (hsv.v > rgb_matrix_config.hsv.v) { hsv.v = rgb_matrix_config.hsv.v; } switch (mode) { case 1: // breathing { uint16_t time = scale16by8(g_rgb_counters.tick, speed / 8); hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); RGB rgb = hsv_to_rgb(hsv); for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { if (HAS_FLAGS(g_led_config.flags[i], led_type)) { rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } } break; } default: // Solid Color { RGB rgb = hsv_to_rgb(hsv); for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { if (HAS_FLAGS(g_led_config.flags[i], led_type)) { rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } } break; } } } #endif //RGB_MATRIX_ENABLE void dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { register_code16(S(KC_2)); } else { SEND_STRING("tom.campie@gmail.com"); } } void dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { unregister_code16(S(KC_2)); } else { } } qk_tap_dance_action_t tap_dance_actions[] = { [KC_EMAIL] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset), [TD_SFT_CPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), }; #define TAPPING_TERM 200 #define IGNORE_MOD_TAP_INTERRUPT #ifdef KEYBOARD_crkbd_rev1 #endif // CRKBD uint16_t get_tapping_term(uint16_t keycode) { switch (keycode) { case LSFT_T(KC_CAPS): return 250; case KC_ENT_LOW: return 150; case KC_SPC_RSE: return(250); case LCTL_T(KC_TAB): return 300; default: return TAPPING_TERM; } }; __attribute__ ((weak)) layer_state_t layer_state_set_keymap (layer_state_t state) { return state; } uint32_t layer_state_set_user(uint32_t state) { state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); switch (biton32(state)) { case _LOWER: break; case _RAISE: break; case _ADJUST: break; default: break; } return state; } #ifdef KEYBOARD_crkbd_rev1 __attribute__((weak)) void matrix_scan_keymap(void) {} extern bool oled_initialized; void matrix_scan_user(void) { if(!oled_initialized) { wait_ms(200); oled_init(0); return; } matrix_scan_keymap(); } extern uint8_t is_master; #endif // CRKBD uint16_t oled_timer; __attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { #ifdef CONSOLE_ENABLE uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); #endif if (record->event.pressed) { #ifdef OLED_DRIVER_ENABLE oled_timer = timer_read(); oled_on(); #endif // OLED_DRIVER_ENABLE switch (keycode) { case KC_BBB: if (record->event.pressed) { SEND_STRING(":b:"); } else {} break; case KC_BEPIS: if (record->event.pressed) { SEND_STRING("BEPIS"); } else {} break; } } return true; } #ifdef KEYBOARD_crkbd_rev1 #ifdef OLED_DRIVER_ENABLE void render_logo(void) { static const char PROGMEM logo[] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0}; oled_write_P(logo, false); } void render_status_main(void) { // Host Keyboard USB Status oled_write_P(PSTR("USB: "), false); switch (USB_DeviceState) { case DEVICE_STATE_Unattached: oled_write_P(PSTR("Unattached\n"), false); break; case DEVICE_STATE_Suspended: oled_write_P(PSTR("Suspended\n"), false); break; case DEVICE_STATE_Configured: oled_write_P(PSTR("Connected\n"), false); break; case DEVICE_STATE_Powered: oled_write_P(PSTR("Powered\n"), false); break; case DEVICE_STATE_Default: oled_write_P(PSTR("Default\n"), false); break; case DEVICE_STATE_Addressed: oled_write_P(PSTR("Addressed\n"), false); break; default: oled_write_P(PSTR("Invalid\n"), false); } // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); switch (biton32(layer_state)) { case _BASE: oled_write_P(PSTR("Colemak\n"), false); break; case _RAISE: oled_write_P(PSTR("Numbers\n"), false); break; case _LOWER: oled_write_P(PSTR("Symbols\n"), false); break; case _ADJUST: oled_write_P(PSTR("Adjust\n"), false); break; case _ARROW: oled_write_P(PSTR("Navigation\n"), false); break; case _FKEY: oled_write_P(PSTR("Function\n"), false); break; default: // Or use the write_ln shortcut over adding '\n' to the end of your string oled_write_ln_P(PSTR("Undefined"), false); } // Host Keyboard LED Status oled_write_ln_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("Caps Lock\n") : PSTR(" \n"), false); } __attribute__ ((weak)) void oled_task_keymap(void) {} void oled_task_user(void) { if (timer_elapsed(oled_timer) > 20000) { oled_off(); return; } if (is_master) { render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_logo(); oled_scroll_left(); } oled_task_keymap(); } #endif // OLED_Driver #endif // crkbd