Repository navigation
Releases: awarson2233/EGoTouchRev
Release list
v1.4.0
1.4.0 (2026-10-16)
✨ 新功能
- tools: 新增片上解算验证工具 ChipHidProbe / ChipHidProbeB,ghidra-mcp 配置跟随新路径 (489552c)
🐛 修复
- IDLE 唤醒后首次触摸被吞与唤醒后手写笔失效,合入 TSACore 向量化优化 (c61f64d)
- pen: 笔事件通道重开时把连接状态复位成未知,避免唤醒查询丢失后笔整段失效 (f36ee02)
- tsacore: ctrl 控制字的复位位与充电器位对齐 ApDaemon,修复 IDLE 唤醒后首次触摸被吞 (7ed7de3)
⚡ 性能
- tsacore: 基线复位、SHB、坏点、CMF 与 Property 的逐格判定改成可向量化的写法 (8e2984c)
- tsacore: 轮廓插值的备忘表改成定长静态数组 (d9cf324)
- tsacore: 适配层的死区与增益循环改成可向量化的写法 (d22ecb3)
♻️ 重构
- tsacore: 宿主接口改成类型化的 TsaCore.h,删掉 shim 与核里的死代码 (8365e67)
v1.3.0
v1.2.0
1.2.0 (2026-10-15)
✨ 新功能
- device: read the panel project id from the display driver OTP (64a0dd1)
- runtime: route pen status, BT pressure and master-less frames to the TSACore solver (2489d55)
- tools: EGoTouchRecorder (c62aea3)
- touch: feed stylus frame state, pen report and pen session into TSACore (bee1158)
- touch: plug TSACore into the runtime; align AFE read and panel power handling with the stock driver (8345c26)
- touch: replicate the full TSACore finger pipeline (e937963)
- TouchSolver/raw: expose the full algorithm state for replay comparison (a18f293)
- TouchSolver/raw: reconstruct and compile 73 TSACore algorithm C sources cleanly under Clang -O3 (6f69f21)
- TouchSolver/raw: restore the TSA_ASAProcess shell behind a host stylus report bridge (1134833)
- TouchSolver: add decompiled TSACore finger pipeline, analysis docs, and C++ reconstruction headers (d6886df)
- TsaRawReplay: compare the whole TSACore state against a reference build (16a576e)
- TsaRawReplay: print tilt intermediates, IIR speed/coefficient and recorded BT pressure on STY lines (2dd25d9)
- TsaRawReplay: replay pen paths with a synthetic pen or the real StylusPipeline (ccb410f)
🐛 修复
- stylus: restore the ASA IIR coefficients and interpolation span (b59f67d)
- stylus: take the tilt length and ratio table from the ASA flash parameters (2e4ba7e)
- touch: hand the stylus tilt to TSACore without negating it (8055285)
- TouchSolver/raw: separate the two g_lastStylusTimeStamp statics and correct the AsaOut status offset (178627b)
- tsacore raw: prune the CMF 2D/PCA filter (76b381d)
- tsacore raw: read the slot-1 tuning block behind pDim1PitchMap with 8-byte elements (4b8c027)
- tsacore raw: read the stylus XY correction constants as floats (8077ad0)
- tsacore raw: restore the float math of the TZ contour interpolation (a6fcd8b)
- tsacore raw: round the 3/4 lower bounds of the threshold entries toward zero (6121110)
- tsacore raw: write the touch-mode debounce entries as 16-bit (afd0ae2)
- tsacore: read the AFE scan-rate parameters from the right FlashPrmt offsets (0b01291)
- TsaRawReplay: keep the recording probe of a coverage run from writing default.profraw into the repo (9d15519)
- TsaRawReplay: run the stylus scenario for every recording and accept comma-separated recording lists (54783ef)
⚡ 性能
- tools: cache reference replays and run comparisons in parallel (cfb5294)
- tools: compare outputs only, on three scenarios by default (252e955)
- tsacore: batch CMF clustering runs; unconditional per-cell updates (2608414)
- tsacore: branchless flat mask and local cluster state in CMF NoiseCal (b546d4c)
- tsacore: compute only what is read in raw2raw, contour, Self and Property (f4a3369)
- tsacore: drop write-only TZ morphology and CMF side outputs (d08f486)
- tsacore: hoist flash parameters, screen peak rows, memoize contour samples (bb1f06d)
- tsacore: row-level contour memo, narrower Property scans, chunked lookups (5e2da20)
- tsacore: screen sensor-broken Dif checks per 16-cell chunk (f6632b5)
- tsacore: step profiling and a branchless Self::Process (91fa36e)
- tsacore: time the whole frame without per-step timer overhead (e571d39)
- tsacore: vectorizable per-cell timers in TSABuffer; bench the Release build (412148f)
♻️ 重构
- make TSACore the only finger solver; drop EGoTouchApp and the old tests (3bc8d07)
- tsacore: drop specialControlFlags and the Raw naming (6de9e97)
- tsacore: name the fieldXXX members, drop write-only ones (187ecaf)
- tsacore: replace the memory image with C++ state objects (230e4f4)
- tsacore: retire the raw C layer (a200784)
- tsacore: rewrite anti-touch rejection (AntiTouch) in C++ (e281312)
- tsacore: rewrite MISC and the state registry in C++ (7d10ea9)
- tsacore: rewrite peak detection and the peak tables in C++ (1943f20)
- tsacore: rewrite stylus palm rejection (StylusAft) in C++ (8e3603e)
- tsacore: rewrite the AFE interface and scan scheduling in C++ (6f7e06e)
- tsacore: rewrite the ASA stylus bridge in C++ (1c2ce26)
- tsacore: rewrite the baseline in C++ (28709d4)
- tsacore: rewrite the binary-image morphology (Image) in C++ (eed20b5)
- tsacore: rewrite the centroid and edge correction (CTD) in C++ (9d0d267)
- tsacore: rewrite the common mode filter in C++ (5f8fa75)
- tsacore: rewrite the coordinate filter and touch mode in C++ (6ae539c)
- tsacore: rewrite the edge recovery (ER) in C++ (ae85818)
- tsacore: rewrite the exception state machine (Exception, FIException) in C++ ([328399c](https://github.com/awarson2233/EGoTou...
EGoTouch v1.1.2
What's Changed
- Optimize service release logger memory use by @awarson2233 in #73
Full Changelog: v1.1.1...v1.1.2
EGoTouch v1.1.1
Full Changelog: v1.0.4...v1.1.1
EGoTouchRev v1.0.4
EGoTouchRev-rebuild 升级日志
本版本对 EGoTouchRev-rebuild 进行了深度的架构重构与功能扩展,主要聚焦于手写笔(Stylus)与触摸(Touch)信号处理流水线的模块化重构、VHF 虚拟 HID 注入服务、基于共享内存的三缓冲区 IPC 机制以及全新的 ImGui 诊断工作台 (Diagnostics Workbench)。
🏗️ 整体架构演进
自 v1.0.3 以来,系统已逐步从原有的混合耦合架构演进为高内聚、低耦合的模块化数据流管道。下图展示了当前的系统核心架构与数据流向:
graph TD
subgraph HW["硬件与数据采集层"]
Himax["Himax 芯片通信"] -->|原始帧数据| Pipelines
end
subgraph Pipelines["核心数据流水线"]
direction TB
subgraph TouchPipeline["触摸流 (Touch Pipeline)"]
T_Cond["信号调理"] --> T_Feat["特征提取"]
T_Feat --> T_Track["手势/触控追踪"]
T_Track --> T_SIMD["SIMD加速解算器"]
end
subgraph StylusPipeline["手写笔流 (Stylus Pipeline)"]
S_Filter["线性滤波器 LinearFilter"] --> S_Tilt["倾斜估计 TiltProcess"]
S_Tilt --> S_Press["压力解算器 PressureSolver"]
S_Press --> S_Edge["边缘检测与锁定"]
end
end
subgraph Service["核心服务与驱动注入层"]
ServiceHost["ServiceHost 服务宿主"] --> DeviceRuntime["DeviceRuntime 状态监控"]
ServiceHost --> VhfReporter["VhfReporter HID注入"]
VhfReporter -->|Win32 合成笔事件| OS["Windows 系统"]
end
subgraph DiagnosticsLayer["诊断与 IPC 交互层"]
IPC["共享内存三缓冲区 IPC"] <--> Diagnostics["DiagnosticsWorkbench 诊断工作台"]
Diagnostics -->|ImGui UI 渲染| ConfigUI["ConfigUIRenderer 配置界面"]
end
Pipelines -->|处理后状态| ServiceHost
Pipelines -->|遥测数据| IPC
🚀 主要特性与改进
1. 模块化与高性能手写笔处理流水线 (Stylus Processing Pipeline)
重构了整个手写笔输入流,实现了高精度的坐标、压感和倾斜度解算:
- 倾斜度估算 (Tilt Estimation):引入
TiltProcess模块,通过 TX1 和 TX2 物理通道的坐标特征精确估算手写笔倾斜度。 - 输入平滑与稳定 (Linear Filtering):实现
LinearFilterProcess线性滤波器,有效消除高频物理抖动,并配备了完整的单元测试进行验证。 - 坐标修正与边缘锁定:增加了手写笔边缘检测与坐标校正逻辑,有效解决屏幕边缘的漂移和跳跃问题。
- 压感解算与噪声抑制:重构了手写笔压力解算器,支持信号噪声抑制与网格峰值检测(Grid Peak Detection)。
2. VHF 虚拟 HID 笔事件注入与运行时服务 (Service Host & VHF)
为了实现向操作系统的硬件级手写笔事件注入,引入了全新的驱动级注入支持:
- VhfReporter HID 注入:实现了基于 VHF (Virtual HID Framework) 的报告器,能够向 Windows 系统发送原生的手写笔/触控报告包。
- Win32 笔按钮合成注入:支持手写笔侧边物理按键的 Win32 事件合成与注入管道。
- 解耦的 Service Host 架构:建立了独立的
ServiceHost进程和 IPC 代理(IPC Proxy),实现了底层服务与上层诊断 UI 的进程级解耦。 - DeviceRuntime 管理:规范化了 Himax、VHF 与手写笔物理设备链的生命周期管理与系统状态监控。
3. 高性能共享内存三缓冲区 IPC
设计并实现了一套低延迟、无锁化的进程间通信机制,用于传输高频触控遥测数据:
- Triple-Buffer IPC:采用共享内存三缓冲区技术,确保诊断 UI 在读取高频帧数据时不阻塞核心数据流水线。
- 规范化配置控制协议 (Canonical IPC Config Contract):引入了规范的 IPC 配置控制协议,支持在运行期动态下发配置和修改流水线参数。
4. 停靠式诊断工作台 (Diagnostics Workbench UI)
大幅升级了开发调试工具链,提供专业级别的实时遥测与调试界面:
- ImGui 升级与停靠布局 (Docking):升级了 ImGui 核心,支持停靠和多窗口管理。
- 实时遥测可视化:支持在 UI 中实时绘制触控点轨迹、传感器网格峰值、手写笔压力曲线与倾斜度变化。
- 服务状态与模式切换:支持在诊断 UI 中直观展示当前服务模式的“期望状态”与“实际激活状态”(Desired vs Active Service Mode),便于快速排查配置冲突。
5. 触摸流水线优化与 SIMD 加速
- SIMD 加速解算器:利用 SIMD 指令集加速触摸特征提取和坐标解算,显著降低 CPU 占用。
- 手势状态机:设计并实现了全新的手势状态机逻辑,使多指手势识别更加精准。
🛠️ 重构与代码质量提升
- Header-only 迁移:将核心的 Touch/Stylus 数据流水线重构为 header-only 模块,极大地提高了编译速度和跨平台(MSVC/MinGW)分发便利性。
- 解耦测试:重构了测试套件,解耦了手写笔测试与具体的帧状态,清理了过时的断言,使 CI/CD 单元测试更加稳定。
- 冗余清理:移成了过时且未使用的 legacy 释放状态镜像(release state mirrors)和 stylus packet builder,精简了核心代码库。
- MinGW 兼容:修正在 MinGW 环境下编译 Unicode 入口服务的链接配置。
📋 提交日志分类汇总 (Commit Logs)
Features & New Architectures (新功能与新架构)
9c8f2d4feat: implement DeviceRuntime management and system state monitoring logicf8585b4feat: implement stylus coordinate correction and Win32 synthetic pen button injection pipeline6e04be0feat: implement stylus solver components and add build-time debugging symbols for MSVCa16a70bfeat: implement stylus coordinate processing pipeline with edge detection and lock logic3a7ed03feat: implement VhfReporter for HID injection and integrate into ServiceHost05744a2feat: implement service host and IPC proxy for decoupled service managementf3e5563feat: implement modular stylus solver components and device runtime handlersb5c4644feat: add stylus pipeline processing modules and reporting helper structuresef781f6feat: implement stylus tilt processing pipeline and coordinate revision logic6dc414efeat: implement modular stylus processing pipeline with configurable solver stages and testing supportd80bc03feat: implement stylus pipeline with pressure, tilt, and filtering solvers and add service host infrastructure53ffc98Add TiltProcess class for estimating stylus tilt based on TX1 and TX2 coordinates320769cfeat: implement LinearFilterProcess to stabilize stylus input and add corresponding unit testsd167654feat: implement stylus linear filtering and post-processing pipeline with associated unit testsebc5dc0feat: implement linear stylus coordinate filter and supporting solver infrastructure2f2c24efeat: show desired vs active service mode in diagnostics UI3e5b539feat: harden pen, VHF, and himax device chainfc27807feat: normalize system state lifecycle handling5743625feat: introduce canonical IPC config control contractaaab4aafeat: implement shared memory triple-buffer IPC and system state monitoring infrastructuref433832feat: implement DiagnosticsWorkbench UI with docking layout, service proxy integration, and real-time telemetry visualization5aa2c89feat: implement stylus pressure solver, signal suppression, and grid peak detection pipeline258c9f5feat: implement TouchTracker and StylusPipeline modules for improved touch and stylus input processing390d48dfeat: implement diagnostics workbench and service runtime architecture for touch pipeline analysis1ced345feat: implement Himax chip communication, stylus/touch pipelines, and TSAPrmt export toola62e572feat: implement stylus suppression and touch pipeline configuration serialization with supporting tests78a6494feat: implement high-performance touch processing pipeline with SIMD-accelerated solver modules and benchmark toolscb2184cfeat: implement modular TouchPipeline architecture and add supporting signal processing modules9a73b18feat: implement modular touch processing pipeline with signal conditioning, feature extraction, and tracking logic644a741feat: implement ConfigUIRenderer for ImGui and establish core TouchPipeline processing logic2dee8a4feat: implement stylus processing pipeline with coordinate solving and state management3376707feat: implement stylus coordinate revision pipeline with tilt-based compensation logic
Refactorings & Optimizations (重构与优化)
4feaee8refactor: drop legacy stylus release state mirrorsbbd6ac1refactor: soften stylus legacy ui diagnostics coupling85561a2refactor: isolate vhf stylus dispatch packetb5f4691refactor: promote stylus frame parser naming9d268a5refactor: inline stylus diagnostics snapshot4a595f6refactor: drop unused stylus packet builder222c293refactor: switch TouchTracker to stylus interop contract316069frefactor: move stylus VHF packet assembly into reporter989cdddrefactor: add stylus frame contract bridge073292brefactor: migrate touch and stylus processing pipelines to header-only modules and implement gesture state machine logic34cbbc5feat: update stylus and touch solver behavior gatesff2f800feat: upgrade imgui
Bug Fixes & Refinements (问题修复与细节调整)
9901263fix: guard peak access in non-diagnostic builds52d573abuild: link service unicode entry on mingwa7f49adchore: remove obsolete and unused files from the codebase
Tests & Documentation (测试与文档)
fd7841btest: decouple stylus modules test from frame state55a27a0test: drop stylus solver packet assertionsf5057e2test: align stylus diag contract coverage1921e40Add detailed analysis of LinearFilterProcess module in TSACore.dll37a7ab3docs: add stylus touch-mirror rebuild designc84e255docs: refresh architecture and clean legacy reverse notes
EGoTouchRev v1.0.3
发行说明 (Release Notes)
🚀 新特性 (New Features)
- 手写笔与触控解算 (Stylus & Touch Solvers): 完整实现了手写笔压力及触控手势解算器,新增支持时间步带入测试 (temporal carryover testing) 和坐标防抖/压制管道。
- 诊断工作台 (Diagnostics Workbench):
- 引入了诊断工作台,用于实时数据监控与记录。
- P3/P4 增加 Stylus 管道诊断集成与 UI 分页、参数类别枚举支持。
- 防误触与核心算法 (Core Algorithms): 实现了防误触 (Palm Rejection) 和分层图像分割算法。
- 硬件与同步 (Hardware & Sync): 实现了 BT MCU 频率同步管道。
- 性能与架构优化 (IPC & Architecture): 新增 Master Frame 核心数据结构,并对 IPC 通讯进行了底层优化。
- 安装与部署 (Installation): 推出基于 WiX v4 的 ARM64 Bootstrapper 与多语言安装程序,打通 CI 流程。
🐛 问题修复 (Bug Fixes)
- 诊断组件: 修复了 DVR 导出卡死问题、Slave 层数据对齐问题以及诊断工作台的热力图显示 Bug。
- 安装与运行: 修复了服务安装失败问题(补充了本地化与最新 EULA),以及 WiX 应用程序部署脚本。
- 代码与状态:
- 移除了由于 Merge 导致的残留 Git 冲突标记。
- 修复了
BtMcuTestTool中对sscanf_s返回值未进行严格检查的问题。 - 彻底解决了 Algorithm-A 遗留的结构性冲突。
🔒 安全更新 (Security Updates)
- 修复了系统状态监控事件 (System State Monitor Events) 中存在的非安全
NULL DACL漏洞。 - 修复了命名管道服务器 (Named Pipe Server) 中存在的非安全
NULL DACL漏洞。
🏗️ 架构与重构 (Refactoring & Architecture)
- 全面向核心解算器架构迁移 (Core Solvers Architecture)。
- 提取并重构了硬件层,将 Himax AFE 与 BT MCU 通道独立出专属模块。
- 优化并重构了触控算法管道、UI 层以及 StylusPipeline 的状态管理。
- 注入宿主模块 (Host Module):支持手写笔系统状态监控。
- 标准化代码库:将全局日志记录宏统一为更严谨的 4 参数签名规范。
📚 文档 (Documentation)
- 新版架构文档:新增触控与手写笔管道配置文档、架构重构文档。
- 逆向工程:调整统一并清理了旧版文档结构,更新了逆向工程分析笔记。
⚙️ 测试与常规维护 (Tests & Chores)
- 完善测试流程:新增 Logger 初始化错误路径测试。
- 代码库规范化:优化并清理了
.gitignore,管理项目忽略规则。
EGoTouchRev v1.0.1
EGoTouch v1.0.1 - ARM64 原生架构、IPC 协同与触控笔全面强化 🎉
本次发布是 EGoTouch 项目在稳定性与可用性上的绝佳里程碑。我们非常激动地带来全新的 Windows on ARM 原生安装程序、极其稳如磐石的服务到应用(Service-to-App)IPC 通信、智能系统状态控制,以及大幅提效的触控追踪算法。
🌟 核心亮点
- 📦 原生 ARM64 安装包(基于 WiX): 项目现已提供采用 WiX Toolset v4 构建的纯 ARM64
.msi自动化安装包。它能够全自动完成EGoTouchService的注册、开启系统自启动保障,并支持纯净卸载,彻底告别繁琐的手动部署。 - 🔋 智能休眠与电源管理: 深度集成了对系统生命周期的监控 (
SystemStateMonitor)。后台服务现在能精准捕捉“息屏”或“系统睡眠”事件,并优雅地临时挂起设备轮询线程。这不仅大幅降低了电池消耗,也彻底解决了设备待机时可能触发的“幽灵触控”(Ghost Input)问题。
🛠️ 深度优化与修复
- 跨 Session 的 IPC 内存共享: 修复了后台 Session 0 服务隔离导致的前端可视化 App 访问违例问题。通过将共享内存名提升至
Global\命名空间,前端现可零阻力、无撕裂地渲染来自后台的高频实时分析数据。 - 更细粒度的设备状态机: 重构了
DeviceRuntime(设备运行时)的底层状态挂载转换机制,消除了竞态条件。在此防御性设计下,程序将不会出现由于设备的瞬间断连或电源切换而导致的线程卡死。 - 极致的 I/O 日志优化: 重新优化了后台服务的追踪诊断日志策略。下调了多余日志输出并严格执行基于 3 文件轮转覆盖策略(限流至
C:\ProgramData\EGoTouchRev\目录),确保后台只做最核心的工作,绝不吃掉您的磁盘 I/O。
📥 安装指南
体验最新的触控算法与服务基础架构:
- 下载下方附件中的
EGoTouch_ARM64_v1.0.1.msi。 - 双击运行(程序将申请管理员权限)。
- 安装完成后,后台驱动服务将自动挂载至 Windows 系统服务库中进行保护。
小提示:如需查看实时压感绘图等数据分析面板,请使用Debug自行构建。
EGoTouchRev v1.0.0 (Native ARM64 Core)
EGoTouchRev v1.0.0 - 首个原生 ARM64 正式版本 🚀
🎉 这是 EGoTouchRev (Rebuild) 的首个重大稳定版本发布!
本次更新全面引入了基于“自建算法”的独立触控解析管线,重构了系统服务架构,并首次发布了纯正血统的 ARM64 独立安装包。该版本彻底摆脱了对某特定闭源依赖的束缚。
🌟 核心特性 (Key Features)
1. 全新底层算法与防抖管线 (Algorithm & Smoothing)
- 1 Euro Filter 完全重构:重新校准了电容坐标系的抗抖动算法,大幅削弱了高频静止时的光标跳动,实现了原生级的“跟手感”。
- 高级防误触 (Anti-Bounce):专为滑动时的瞬间弹起设计的抗黏滞算法,保证持续拖拽时的坐标连续性。
- 动态阈值触发:优化了指尖悬停和快速点击时容易触发多次点击的灵敏度判定。
2. 硬件控制与触控强化 (Hardware Control)
- 专注基础体验:针对多点触控(Multi-touch)数据管线进行了全方位性能调优。
- (
⚠️ 注:为保证自建触摸算法的绝对稳定与无干扰测试,此版本已暂时切断手写笔(Stylus/BT MCU)模块的底层初始化,当前仅支持纯粹的手指电容触控。高刷压感笔功能将在后续独立版本中重新合入)。
3. 系统级架构 (System Architecture)
- 全面转向 Windows Service:程序彻底剥离至以
LocalSystem用户态运行的 Windows 守护服务,以 实时响应 (REALTIME_PRIORITY_CLASS) 等级执行核心循环。 - 全自动状态监控:重新设计了
SystemStateMonitor和事件响应链。目前能完美抓取并响应盖子开合(Lid On/Off)与熄屏唤醒(Display On),实现服务的精准休眠与打火重启。 - 日志架构重构:精简了无用的噪音数据。支持实时诊断级别配置落盘。
💾 安装指南 (Installation)
- 点击下方 Assets (资产) 区域。
- 下载唯一的安装包文件:
EGoTouch_ARM64_v1.0.msi。 - 双击运行。系统会自动弹窗申请管理员权限(UAC),随后静默完成文件释放和后台服务
EGoTouchService启动。
(本次更新汇聚了项目所有的突破性底层进度,强烈建议所有处于内测分支的用户升级至此版本。祝享用愉快!)