Use your Mac trackpad as a weighing scale
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 |
TrackWeight
将你的 MacBook 触控板变为精准的数字称重秤
TrackWeight 是一款 macOS 应用,它借助现代 MacBook 触控板内置的 Force Touch 压力传感器,将你的 MacBook 触控板转变为精准的称重秤。
https://github.com/user-attachments/assets/7eaf9e0b-3dec-4829-b868-f54a8fd53a84
使用方法如下:
- 打开称重秤
- 将手指放在触控板上
- 保持手指接触的同时,将物体放在触控板上
- 尽量减少对触控板的压力,同时保持接触。此时显示的就是物体的重量
工作原理
TrackWeight 使用了 Takuto Nakamura 开发的 Open Multi-Touch Support 库 的自定义分支,以获取 macOS 上所有鼠标和触控板事件的底层访问权限。该库提供详细的触摸数据,包括标准应用通常无法获取的压力读数。
其核心原理是,只有当触控板表面检测到电容时(即你的手指或其他导电物体与触控板接触),才会生成触控板压力事件。满足此条件后,触控板的 Force Touch 传感器会提供精确的压力读数,这些读数经过校准后可转换为重量测量值。
系统要求
- macOS 13.0+(Ventura 或更高版本)
- 配备 Force Touch 触控板的 MacBook(2015 年或更新的 MacBook Pro,2016 年或更新的 MacBook)
- 禁用 App Sandbox(需要底层触控板访问权限)
- Xcode 16.0+ 和 Swift 6.0+(用于开发)
安装方法
选项 1:下载 DMG(推荐)
- 前往 Releases 页面
- 下载最新的 TrackWeight DMG 文件
- 打开 DMG 并将 TrackWeight.app 拖入应用程序文件夹
- 运行应用程序(对于未签名的构建,你可能需要在系统偏好设置 > 安全性与隐私中允许其运行)
选项 2:Homebrew
brew install --cask krishkrosh/apps/trackweight --force
选项 3:从源代码构建
- 克隆此代码仓库
- 在 Xcode 中打开
TrackWeight.xcodeproj - 在项目设置中禁用 App Sandbox(触控板访问必需)
- 构建并运行应用程序
有关构建流程设置的更多信息,请参阅 .github/workflows/README.md。
校准过程
重量计算已通过以下方式验证:
- 将 MacBook 触控板直接放置在传统电子秤上
- 施加各种已知重量,同时保持手指与触控板接触
- 将压力读数与参考秤测量值进行比较和校准
- 确保在不同重量范围内保持一致的准确性
事实证明,我们从 MultitouchSupport 获得的数据已经是以克为单位的!
局限性
- 需要手指接触:触控板仅在检测到电容(手指触摸)时才提供压力读数,因此若不保持接触则无法直接称量物体
- 表面接触:被称量物体的放置方式不得干扰所需的手指接触
- 金属物体:金属物体可能会被检测为手指触摸,因此可能需要在物体和触控板之间放置一张纸或一块布以获得准确读数
技术详情
该应用程序使用以下技术构建:
- SwiftUI 用于用户界面
- Combine 用于响应式数据流
- Open Multi-Touch Support 库 用于底层触控板访问
Open Multi-Touch Support 库
本项目在很大程度上依赖于 Takuto Nakamura(@Kyome22)的出色工作以及 Open Multi-Touch Support 库。该库提供:
- 访问 macOS 触控板上的全局多点触控事件
- 详细的触摸数据,包括位置、压力、角度和密度
- 用于触摸事件流的线程安全 async/await 支持
- 触摸状态跟踪和全面的传感器数据
许可协议
本项目基于 MIT 许可协议授权 - 详情请参见 LICENSE 文件。
免责声明
本应用仅用于实验和教育目的。尽管已尽力确保准确性,但 TrackWeight 不应用于需要精确测量的关键场景或商业应用。对于重要使用场景,请始终使用经过校准的秤来验证测量结果。