// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_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) { writePin(WORK_LOUDER_LED_PIN_1, true); } void work_louder_micro_led_2_on(void) { writePin(WORK_LOUDER_LED_PIN_2, true); } void work_louder_micro_led_3_on(void) { writePin(WORK_LOUDER_LED_PIN_3, true); } void work_louder_micro_led_1_off(void) { writePin(WORK_LOUDER_LED_PIN_1, false); } void work_louder_micro_led_2_off(void) { writePin(WORK_LOUDER_LED_PIN_2, false); } void work_louder_micro_led_3_off(void) { 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 == B7 OCR1C = 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 == B6 OCR1B = 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); } #ifdef DEFER_EXEC_ENABLE uint32_t startup_animation(uint32_t trigger_time, void *cb_arg) { static uint8_t index = 0; switch (index) { case 0: work_louder_micro_led_1_on(); break; case 1: work_louder_micro_led_2_on(); break; case 2: work_louder_micro_led_3_on(); break; case 3: work_louder_micro_led_1_off(); break; case 4: work_louder_micro_led_2_off(); break; case 5: work_louder_micro_led_3_off(); break; default: return 0; } index++; return 100; } #endif void matrix_init_kb(void) { setPinOutput(WORK_LOUDER_LED_PIN_1); // left led writePin(WORK_LOUDER_LED_PIN_1, false); setPinOutput(WORK_LOUDER_LED_PIN_2); // middle led writePin(WORK_LOUDER_LED_PIN_2, false); setPinOutput(WORK_LOUDER_LED_PIN_3); // right led writePin(WORK_LOUDER_LED_PIN_3, false); #ifdef DEFER_EXEC_ENABLE defer_exec(500, startup_animation, NULL); #else 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); #endif matrix_init_user(); }