reMarkable 2 support: AppLoad windowed mode and xochitl companion mode#24
Closed
icetingyu wants to merge 1 commit into
Closed
reMarkable 2 support: AppLoad windowed mode and xochitl companion mode#24icetingyu wants to merge 1 commit into
icetingyu wants to merge 1 commit into
Conversation
Ports the diary to the reMarkable 2 (firmware 3.28, 1404x1872 RGB565): - qtfb: RM2 framebuffer format, ARM32 server message offsets (init reply and input events follow the server's pointer width) - pen: query digitizer axis ranges at runtime and rotate the RM2's landscape Wacom axes into portrait screen space; optional shared (non-grab) mode; PenWriter can replay generated strokes through the Wacom device so stock xochitl records them (companion mode), with real-pen detection that pauses injection while the user's pen is near - CJK replies: per-character rasterization animated one glyph at a time, row-run strokes instead of Zhang-Suen thinning (which destroys dense ideographs), coverage threshold tuned for thin strokes, and a post-reply re-drive that develops fast-waveform ink to full black - fonts: loads a Traditional Chinese font (Noto Sans TC, SIL OFL 1.1) resolved relative to the executable, falling back to the embedded Dancing Script - coalesced qtfb flushes (16ms) to avoid saturating the update socket - RM2 build and launch scripts, AppLoad bundle manifest
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Author
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.
This ports the diary to the reMarkable 2 (tested on firmware 3.28.0.162), alongside the existing Paper Pro support. Everything is runtime-selected; the Paper Pro paths are untouched.
What's in it
Windowed mode (AppLoad/qtfb) — RM2 framebuffer format and geometry (1404x1872 RGB565), and ARM32 wire-format handling: the qtfb server packs message payloads at pointer-width offsets, so the init reply and input events parse differently on 32-bit (input events are 24 bytes with payload at offset 4 — they get silently dropped by the 64-bit parse).
Companion mode (no AppLoad needed) — riddle runs beside stock xochitl: it reads the Wacom digitizer in shared (non-grab) mode, and replays Tom's generated strokes back through the same device, so the stock notebook records the reply as ordinary ink. Injection pauses whenever the user's real pen comes near the panel (hover included) so the two event streams never interleave into stray ink.
CJK replies — Zhang-Suen thinning destroys dense ideographs (missing strokes), so CJK text is rasterized per character and animated one glyph at a time from row-run strokes; the anti-aliasing coverage threshold is tuned so hairline strokes survive; after the reply finishes, the region is re-driven a couple of times so fast-waveform e-ink develops to full black. Reply font is Noto Sans TC (SIL OFL 1.1), resolved relative to the executable, with the embedded Dancing Script as fallback.
Update pacing — ink flushes to qtfb are coalesced at 16ms so the update socket never saturates.
Build with
riddle/build-rm2.sh(cross or cargo + armv7 toolchain);appload-rm2.shis the AppLoad entry point,start-rm2.sh/stop-rm2.shrun companion mode. README-RM2.md documents install/use/remove.🤖 Generated with Claude Code