Initial commit: Chatter — assistive-writing app for reMarkable Paper Pro Move

Direct-framebuffer ink pipeline (stock-quality strokes), finger-wipe erase,
growable scrolling canvas with color-ghost cleanup, bidirectional toggle with a
persistent 4-finger return launcher, instant button feedback. Includes prebuilt
aarch64 binaries (dist/), build/deploy/install scripts, a user guide, and a
complete technical reference.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-27 16:34:28 +02:00
commit 5f21d9099c
43 changed files with 2878 additions and 0 deletions

42
CMakeLists.txt Normal file
View File

@@ -0,0 +1,42 @@
cmake_minimum_required(VERSION 3.16)
project(chatter VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
# Per reMarkable's qt_epaper guide: pure Qt Quick (no Qt Widgets).
find_package(Qt6 REQUIRED COMPONENTS Quick Gui)
qt_standard_project_setup(REQUIRES 6.5)
qt_add_executable(chatter
src/main.cpp
src/PenDevice.h
src/PenDevice.cpp
src/AppControl.h
src/AppControl.cpp
src/InkEngine.h
src/InkEngine.cpp
src/FbCapture.h
src/FbCapture.cpp
src/epfb.h
)
qt_add_qml_module(chatter
URI Chatter
VERSION 1.0
QML_FILES
qml/Main.qml
)
target_link_libraries(chatter PRIVATE
Qt6::Quick
Qt6::Gui
# EPFramebuffer::instance/swapBuffers live in the epaper scenegraph plugin.
${CMAKE_SYSROOT}/usr/lib/plugins/scenegraph/libqsgepaper.so
)
# Export the executable's dynamic symbols so our setBuffers interposer (in
# FbCapture.cpp) wins the cross-DSO call from the epaper platform plugin.
target_link_options(chatter PRIVATE -Wl,--export-dynamic)