Conversation
… on the canvas With only Luna or Bongo Cat enabled (WPM_NUMBER, WPM_SPEEDOMETER and WPM_GRAPH all disabled) draw_wpm_status() draws nothing, yet the screen widget still subscribed to zmk_wpm_state_changed and redrew + software rotated the whole canvas roughly once per second while typing. The listener and the draw call are now compiled only when one of the canvas WPM visuals is enabled. Luna/Bongo Cat keep working: they are standalone lv_animimg widgets fed directly by the WPM event.
delneet
marked this pull request as ready for review
July 3, 2026 09:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When only Luna or Bongo Cat is enabled (
WPM_NUMBER,WPM_SPEEDOMETERandWPM_GRAPHalln— the shipped defaults),draw_wpm_status()draws nothing, butscreen.cstill subscribes the whole status screen tozmk_wpm_state_changed. Result: roughly once per second while typing, the entire canvas is redrawn and software-rotated (rotate_canvas) for no visual change. On a split central that CPU time competes with key scanning and BLE, and it shows up as typing lag.Change
The full-canvas WPM listener, its init, and the
draw_wpm_status()call are now compiled only when at least one canvas WPM visual (WPM_NUMBER/WPM_SPEEDOMETER/WPM_GRAPH) is enabled. Luna and Bongo Cat are unaffected: they are standalonelv_animimgwidgets fed directly by the WPM event and update only their own area.No behavior change for anyone who has a WPM visual enabled.
docs/OPTIMIZE.mdgains a section describing the "Luna without the counter" setup, andCHANGELOG.txtis updated.Verification
Built against ZMK v0.3.0 (
nice_nano_v2,corne_left/corne_right nice_oled):WPM_NUMBER=y— listener still compiled in20260703_113510.mp4