summaryrefslogtreecommitdiff
path: root/keyboards/kikoslab
diff options
context:
space:
mode:
authorJouke Witteveen <j.witteveen@gmail.com>2022-09-30 22:24:43 +0200
committerGitHub <noreply@github.com>2022-09-30 16:24:43 -0400
commit8bd73d44555ecb50d0da9bb0e1e48c07b9764e35 (patch)
treee16fe6d5ad251089d0cf28435d47a35cf864bfb0 /keyboards/kikoslab
parentff1aa6be9ad7a35bd422b294ed3ef4aca92db95a (diff)
Fix keyboard pet OLED timeout logic (#17189)
The animation itself turns the screen on, preventing the normal timeout from ever triggering.
Diffstat (limited to 'keyboards/kikoslab')
-rw-r--r--keyboards/kikoslab/ellora65/keymaps/default/keymap.c29
-rw-r--r--keyboards/kikoslab/ellora65/keymaps/via/keymap.c30
2 files changed, 30 insertions, 29 deletions
diff --git a/keyboards/kikoslab/ellora65/keymaps/default/keymap.c b/keyboards/kikoslab/ellora65/keymaps/default/keymap.c
index 625305c557..df0b5b046c 100644
--- a/keyboards/kikoslab/ellora65/keymaps/default/keymap.c
+++ b/keyboards/kikoslab/ellora65/keymaps/default/keymap.c
@@ -68,7 +68,6 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
/* timers */
uint32_t anim_timer = 0;
-uint32_t anim_sleep = 0;
/* current frame */
uint8_t current_frame = 0;
@@ -160,35 +159,37 @@ static void render_luna(int LUNA_X, int LUNA_Y) {
/* current status */
if (led_usb_state.caps_lock) {
- oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(bark[current_frame], ANIM_SIZE);
} else if (isSneaking) {
- oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(sneak[current_frame], ANIM_SIZE);
} else if (current_wpm <= MIN_WALK_SPEED) {
- oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(sit[current_frame], ANIM_SIZE);
} else if (current_wpm <= MIN_RUN_SPEED) {
- oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(walk[current_frame], ANIM_SIZE);
} else {
- oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(run[current_frame], ANIM_SIZE);
}
}
+# if OLED_TIMEOUT > 0
+ /* the animation prevents the normal timeout from occuring */
+ if (last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) {
+ oled_off();
+ return;
+ } else {
+ oled_on();
+ }
+# endif
+
/* animation timer */
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
anim_timer = timer_read32();
animate_luna();
}
-
- /* this fixes the screen on and off bug */
- if (current_wpm > 0) {
- oled_on();
- anim_sleep = timer_read32();
- } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
- oled_off();
- }
}
diff --git a/keyboards/kikoslab/ellora65/keymaps/via/keymap.c b/keyboards/kikoslab/ellora65/keymaps/via/keymap.c
index 8275718bcb..aff4a92089 100644
--- a/keyboards/kikoslab/ellora65/keymaps/via/keymap.c
+++ b/keyboards/kikoslab/ellora65/keymaps/via/keymap.c
@@ -78,7 +78,6 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
/* timers */
uint32_t anim_timer = 0;
-uint32_t anim_sleep = 0;
/* current frame */
uint8_t current_frame = 0;
@@ -170,38 +169,39 @@ static void render_luna(int LUNA_X, int LUNA_Y) {
/* current status */
if (led_usb_state.caps_lock) {
- oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(bark[current_frame], ANIM_SIZE);
} else if (isSneaking) {
- oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(sneak[current_frame], ANIM_SIZE);
} else if (current_wpm <= MIN_WALK_SPEED) {
- oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(sit[current_frame], ANIM_SIZE);
} else if (current_wpm <= MIN_RUN_SPEED) {
- oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(walk[current_frame], ANIM_SIZE);
} else {
- oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE);
+ oled_write_raw_P(run[current_frame], ANIM_SIZE);
}
}
+# if OLED_TIMEOUT > 0
+ /* the animation prevents the normal timeout from occuring */
+ if (last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) {
+ oled_off();
+ return;
+ } else {
+ oled_on();
+ }
+# endif
+
/* animation timer */
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
anim_timer = timer_read32();
animate_luna();
}
-
- /* this fixes the screen on and off bug */
- if (current_wpm > 0) {
- oled_on();
- anim_sleep = timer_read32();
- } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
- oled_off();
- }
}
-
/* KEYBOARD PET END */
static void print_status_narrow(void) {