summaryrefslogtreecommitdiff
path: root/keyboards/anavi/knobs3/knobs3.c
diff options
context:
space:
mode:
authorLeon Anavi <leon@anavi.org>2023-03-06 03:28:01 +0200
committerGitHub <noreply@github.com>2023-03-05 18:28:01 -0700
commit61f3f5676a1f4ba31ad9ed7bdcba164178230275 (patch)
tree986bcdd24302638c84dad696b9c272a081d19dda /keyboards/anavi/knobs3/knobs3.c
parent500c4b748491727aa66f72331702072a8417d528 (diff)
keyboards/anavi: Add ANAVI Knobs 3 (#18624)
Diffstat (limited to 'keyboards/anavi/knobs3/knobs3.c')
-rw-r--r--keyboards/anavi/knobs3/knobs3.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/keyboards/anavi/knobs3/knobs3.c b/keyboards/anavi/knobs3/knobs3.c
new file mode 100644
index 0000000000..efae010163
--- /dev/null
+++ b/keyboards/anavi/knobs3/knobs3.c
@@ -0,0 +1,73 @@
+// Copyright 2022 Leon Anavi <leon@anavi.org>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+#include <stdio.h>
+
+void keyboard_post_init_kb(void) {
+ // Enable RGB LED
+ setPinOutput(GP11);
+ writePinHigh(GP11);
+ rgblight_enable();
+
+ // Offload to the user func
+ keyboard_post_init_user();
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (0 == index) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (1 == index) {
+ if (clockwise) {
+ tap_code(KC_UP);
+ } else {
+ tap_code(KC_DOWN);
+ }
+ } else if (2 == index) {
+ if (clockwise) {
+ tap_code(KC_LEFT);
+ } else {
+ tap_code(KC_RIGHT);
+ }
+ }
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+bool oled_task_kb(void) {
+
+ if (!oled_task_user()) {
+ return false;
+ }
+
+ // Host Keyboard Layer Status
+ oled_write_ln_P(PSTR("ANAVI Knobs 3"), false);
+ oled_write_ln_P(PSTR("Keymap: Default"), false);
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(PSTR("Num Lock: "), false);
+ oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false);
+ oled_write_P(PSTR("Caps Lock: "), false);
+ oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false);
+ oled_write_P(PSTR("Scroll Lock: "), false);
+ oled_write_ln_P(led_state.scroll_lock ? PSTR("On") : PSTR("Off"), false);
+#ifdef RGBLIGHT_ENABLE
+ static char rgbStatusLine1[26] = {0};
+ snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode());
+ oled_write_ln(rgbStatusLine1, false);
+ static char rgbStatusLine2[26] = {0};
+ snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
+ oled_write_ln(rgbStatusLine2, false);
+#endif
+ return false;
+}
+#endif