// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) // SPDX-License-Identifier: GPL-2.0-or-later #include "micro.h" #if defined(RGB_MATRIX_ENABLE) // clang-format off led_config_t g_led_config = { { { NO_LED, 10, 11, NO_LED }, { 9 , 8, 7, 6 }, { 2, 3, 4, 5 }, { NO_LED, 1, 0, NO_LED } }, { { 122, 64 }, { 103, 64 }, { 84, 45 }, { 103, 45 }, { 133, 45 }, { 152, 45 }, { 152, 26 }, { 122, 26 }, { 103, 26 }, { 84, 26 }, { 103, 7 }, { 122, 7 } }, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 } }; // clang-format on #endif #if defined(ENCODER_ENABLE) bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 0) { if (clockwise) { tap_code_delay(KC_VOLU, 10); } else { tap_code_delay(KC_VOLD, 10); } } else if (index == 1) { if (clockwise) { tap_code_delay(KC_WH_U, 10); } else { tap_code_delay(KC_WH_D, 10); } } return true; } #endif void work_louder_micro_led_1_on(void) { setPinOutput(WORK_LOUDER_LED_PIN_1); writePin(WORK_LOUDER_LED_PIN_1, true); } void work_louder_micro_led_2_on(void) { setPinOutput(WORK_LOUDER_LED_PIN_2); writePin(WORK_LOUDER_LED_PIN_2, true); } void work_louder_micro_led_3_on(void) { setPinOutput(WORK_LOUDER_LED_PIN_3); writePin(WORK_LOUDER_LED_PIN_3, true); } void work_louder_micro_led_1_off(void) { setPinInput(WORK_LOUDER_LED_PIN_1); writePin(WORK_LOUDER_LED_PIN_1, false); } void work_louder_micro_led_2_off(void) { setPinInput(WORK_LOUDER_LED_PIN_2); writePin(WORK_LOUDER_LED_PIN_2, false); } void work_louder_micro_led_3_off(void) { setPinInput(WORK_LOUDER_LED_PIN_3); writePin(WORK_LOUDER_LED_PIN_3, false); } void work_louder_micro_led_all_on(void) { work_louder_micro_led_1_on(); work_louder_micro_led_2_on(); work_louder_micro_led_3_on(); } void work_louder_micro_led_all_off(void) { work_louder_micro_led_1_off(); work_louder_micro_led_2_off(); work_louder_micro_led_3_off(); } void work_louder_micro_led_1_set(uint8_t n) { #if WORK_LOUDER_LED_PIN_1 == B6 OCR1B = n; #else n ? work_louder_micro_led_1_on() : work_louder_micro_led_1_off(); #endif } void work_louder_micro_led_2_set(uint8_t n) { #if WORK_LOUDER_LED_PIN_2 == B7 OCR1C = n; #else n ? work_louder_micro_led_2_on() : work_louder_micro_led_2_off(); #endif } void work_louder_micro_led_3_set(uint8_t n) { #if WORK_LOUDER_LED_PIN_3 == B5 OCR1A = n; #else n ? work_louder_micro_led_3_on() : work_louder_micro_led_3_off(); #endif } void work_louder_micro_led_all_set(uint8_t n) { work_louder_micro_led_1_set(n); work_louder_micro_led_2_set(n); work_louder_micro_led_3_set(n); } void keyboard_post_init_kb(void) { TCCR1A = 0b10101001; // set and configure fast PWM TCCR1B = 0b00001001; // set and configure fast PWM keyboard_post_init_user(); } void work_louder_led_init_animation(void) { work_louder_micro_led_all_off(); wait_ms(500); work_louder_micro_led_1_on(); wait_ms(100); work_louder_micro_led_2_on(); wait_ms(100); work_louder_micro_led_3_on(); wait_ms(100); work_louder_micro_led_1_off(); wait_ms(100); work_louder_micro_led_2_off(); wait_ms(100); work_louder_micro_led_3_off(); wait_ms(200); } void suspend_power_down_kb(void) { suspend_power_down_user(); work_louder_micro_led_all_off(); } void suspend_wakeup_init_kb(void) { work_louder_led_init_animation(); suspend_wakeup_init_user(); }