diff options
Diffstat (limited to 'users/tominabox1/tominabox1.c')
-rw-r--r-- | users/tominabox1/tominabox1.c | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/users/tominabox1/tominabox1.c b/users/tominabox1/tominabox1.c new file mode 100644 index 0000000000..95e6ee7803 --- /dev/null +++ b/users/tominabox1/tominabox1.c @@ -0,0 +1,281 @@ +#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 |