summaryrefslogtreecommitdiffstats
path: root/keyboards/pica40/rev1/rev1.c
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2022-12-30 00:53:52 +0000
committerQMK Bot <hello@qmk.fm>2022-12-30 00:53:52 +0000
commit62d101b886baa476fbaaf7ba98e63bbc2d90fa9c (patch)
tree64db942a172474924a57357b8a02d63ad97813f8 /keyboards/pica40/rev1/rev1.c
parent91bfc2ba3fa0e59e637bc0161a31457152bcd27f (diff)
parentced8142847e7c6a1e0e260017131e34e3da1b0ff (diff)
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'keyboards/pica40/rev1/rev1.c')
-rw-r--r--keyboards/pica40/rev1/rev1.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/keyboards/pica40/rev1/rev1.c b/keyboards/pica40/rev1/rev1.c
new file mode 100644
index 0000000000..f008e4857a
--- /dev/null
+++ b/keyboards/pica40/rev1/rev1.c
@@ -0,0 +1,91 @@
+// Copyright 2022 zzeneg (@zzeneg)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rev1.h"
+
+#ifdef PICA40_RGBLIGHT_TIMEOUT
+
+uint16_t check_rgblight_timer = 0;
+uint16_t idle_timer = 0;
+uint8_t counter = 0;
+
+void housekeeping_task_kb(void) {
+ if (timer_elapsed(check_rgblight_timer) > 1000) {
+ check_rgblight_timer = timer_read();
+
+ if (rgblight_is_enabled() && timer_elapsed(idle_timer) > 10000) {
+ idle_timer = timer_read();
+ counter++;
+ }
+
+ if (rgblight_is_enabled() && counter > PICA40_RGBLIGHT_TIMEOUT * 6) {
+ counter = 0;
+ rgblight_disable_noeeprom();
+ }
+ }
+
+ housekeeping_task_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed && timer_elapsed(idle_timer) > 1000) {
+ idle_timer = timer_read();
+ counter = 0;
+ if (!rgblight_is_enabled()) {
+ rgblight_enable_noeeprom();
+ }
+ }
+
+ return process_record_user(keycode, record);
+}
+
+void keyboard_post_init_kb(void) {
+ check_rgblight_timer = timer_read();
+ idle_timer = timer_read();
+ rgblight_enable_noeeprom();
+
+ keyboard_post_init_user();
+}
+
+
+#endif // PICA40_RGBLIGHT_TIMEOUT
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_270;
+}
+
+void render_mods(uint8_t modifiers) {
+ oled_write_ln_P((modifiers & MOD_MASK_CTRL) ? PSTR("Ctrl") : PSTR(" "), false);
+ oled_write_ln_P((modifiers & MOD_MASK_ALT) ? PSTR("Alt") : PSTR(" "), false);
+ oled_write_ln_P((modifiers & MOD_MASK_SHIFT) ? PSTR("Shft") : PSTR(" "), false);
+ oled_write_ln_P((modifiers & MOD_MASK_GUI) ? PSTR("GUI") : PSTR(" "), false);
+}
+
+bool oled_task_kb(void) {
+ // display's top is hidden by cover
+ oled_write_ln_P(PSTR(" "), false);
+ oled_write_ln_P(PSTR(" "), false);
+ oled_write_ln_P(PSTR(" "), false);
+
+ if (!oled_task_user()) return false;
+
+ render_mods(get_mods());
+
+ return true;
+}
+
+#endif // OLED_ENABLE
+
+#ifdef ENCODER_ENABLE
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) return false;
+
+ tap_code(clockwise ? KC_VOLU : KC_VOLD);
+
+ return false;
+}
+
+#endif // ENCODER_ENABLE