summaryrefslogtreecommitdiffstats
path: root/keyboards/neson_design/nico/nico.c
diff options
context:
space:
mode:
authoryulei <yuleiz@gmail.com>2023-07-25 11:12:26 +0800
committerGitHub <noreply@github.com>2023-07-24 21:12:26 -0600
commite126793d952c64b4d58381a3ce400947da56bfcb (patch)
treee8358ca1063c27bd977ba97224a32854d04d042f /keyboards/neson_design/nico/nico.c
parent855c03d44565a44607d5446fbf227e6955293847 (diff)
[Keyboard] Add nico (#20686)
Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Joel Challis <git@zvecr.com>
Diffstat (limited to 'keyboards/neson_design/nico/nico.c')
-rw-r--r--keyboards/neson_design/nico/nico.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/keyboards/neson_design/nico/nico.c b/keyboards/neson_design/nico/nico.c
new file mode 100644
index 0000000000..63f08b8639
--- /dev/null
+++ b/keyboards/neson_design/nico/nico.c
@@ -0,0 +1,85 @@
+/**
+ * @file nico.c
+ *
+ Copyright 2023 astro
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+#ifdef RGBLIGHT_ENABLE
+
+static bool alert = false;
+static bool backup = false;
+static LED_TYPE caps_led;
+static uint16_t last_ticks = 0;
+
+#define ALERT_INTERVAL 500
+#define ALERM_LED_R 0xFF
+#define ALERM_LED_G 0xA5
+#define ALERM_LED_B 0x00
+//golden 0xFF, 0xD9, 0x00
+
+void housekeeping_task_kb(void)
+{
+ if (host_keyboard_led_state().caps_lock) {
+ if (!backup) {
+ caps_led.r = led[4].r;
+ caps_led.g = led[4].g;
+ caps_led.b = led[4].b;
+ backup = true;
+ }
+ if(alert) {
+ led[4].r = ALERM_LED_G;
+ led[4].g = ALERM_LED_R;
+ led[4].b = ALERM_LED_B;
+ } else {
+ led[4].r = 0;
+ led[4].g = 0;
+ led[4].b = 0;
+ }
+ if (timer_elapsed(last_ticks) > ALERT_INTERVAL) {
+ alert = !alert;
+ last_ticks = timer_read();
+ }
+ ws2812_setleds(led, RGBLED_NUM);
+ } else {
+ if (backup) {
+ led[4].r = caps_led.r;
+ led[4].g = caps_led.g;
+ led[4].b = caps_led.b;
+ backup = false;
+ ws2812_setleds(led, RGBLED_NUM);
+ }
+ }
+ housekeeping_task_user();
+}
+
+void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
+{
+ start_led[2].r = start_led[0].r;
+ start_led[2].g = start_led[0].g;
+ start_led[2].b = start_led[0].b;
+
+ start_led[3].r = start_led[1].r;
+ start_led[3].g = start_led[1].g;
+ start_led[3].b = start_led[1].b;
+
+ uint8_t tmp = start_led[4].g;
+ start_led[4].g = start_led[4].r;
+ start_led[4].r = tmp;
+ ws2812_setleds(start_led, RGBLED_NUM);
+}
+
+#endif \ No newline at end of file