diff options
author | Leon Anavi <leon.anavi@konsulko.com> | 2022-11-15 18:54:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-15 16:54:45 +0000 |
commit | 7e843d0eca7c9189425b9ee9660d23b03342d03c (patch) | |
tree | 0068e153c7cb8ef42763462c8f12d5ea3b6d4b19 /keyboards/anavi/knob1/knob1.c | |
parent | c21b77fbd2ef72c04894006fb16d6fd6f511114d (diff) | |
download | qmk_firmware-7e843d0eca7c9189425b9ee9660d23b03342d03c.tar.gz qmk_firmware-7e843d0eca7c9189425b9ee9660d23b03342d03c.zip |
keyboards/anavi: Add ANAVI Knob 1 (#18623)
ANAVI Knob 1 is a mini mechanical keyboard with a clickable rotary
encoder, USB-C, RP2040 microcontroller and I2C slot for a display.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Diffstat (limited to 'keyboards/anavi/knob1/knob1.c')
-rw-r--r-- | keyboards/anavi/knob1/knob1.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/keyboards/anavi/knob1/knob1.c b/keyboards/anavi/knob1/knob1.c new file mode 100644 index 0000000000..cfc3ac8a65 --- /dev/null +++ b/keyboards/anavi/knob1/knob1.c @@ -0,0 +1,59 @@ +// Copyright 2022 Leon Anavi <leon@anavi.org> +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "encoder.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 (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + 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 Knob 1"), 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 |