|
@@ -0,0 +1,170 @@
|
|
|
+// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
|
|
+// 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) && !defined(ENCODERS) && !defined(ENCODER_MAP_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();
|
|
|
+
|
|
|
+}
|