把 MacBook 触控板变成电子秤:TrackWeight 完全指南

——写给想用电脑称东西的你
前言:为什么有人会想用电脑称重?
当你第一次看到「MacBook 触控板可以当电子秤」这个说法,可能会觉得像魔术。但读完这篇文章,你会知道它背后的物理原理、限制、安装步骤以及使用时的注意事项。整篇内容基于开源项目 TrackWeight 的公开文档,不添加任何外部信息,只把它翻译成更贴近日常对话的表达,让任何专科及以上学历的读者都能看懂、会用、知道边界在哪里。
1. TrackWeight 是什么?
一句话总结:
TrackWeight 是一款 macOS 应用,把支持 Force Touch 的 MacBook 触控板变成一台能显示克数的电子秤。
它用到了苹果在 2015 年以后 MacBook 上加入的「Force Touch 压力传感器」。这些传感器原本用来识别轻按、重按,但开发者发现,它们的原始数据正好以克为单位输出,于是实现了「称重」功能。
2. 工作原理:为什么触控板能「感受」重量?
2.1 必须满足的两个条件
| 条件 | 解释 | 
|---|---|
| 电容接触 | 触控板只有在检测到手指或导电物体时,才会生成压力事件。 | 
| 压力传感器 | 手指接触后,Force Touch 传感器把压力转成数字信号,单位恰好是克。 | 
2.2 数据流程图
graph TD
    A[物体放在触控板] --> B[手指保持接触]
    B --> C[Force Touch 传感器]
    C --> D[Open Multi-Touch Support 库]
    D --> E[TrackWeight 应用]
    E --> F[屏幕显示重量]
3. 校准:从「原始数据」到「可信克数」
开发者用了一个非常朴素的办法验证准确性:
- 
把 MacBook 直接压在传统电子秤上。 
- 
用同一组已知砝码(50 g、100 g、200 g……)。 
- 
同时记录触控板读数和电子秤读数。 
- 
发现两者线性度很好,直接以克为单位即可,无需复杂换算。 
换句话说,你看到的数字就是克,不需要额外乘系数。
4. 安装步骤:一步步跟着做
4.1 硬件与系统要求
| 项目 | 最低要求 | 
|---|---|
| 操作系统 | macOS 13.0 及以上 | 
| 机型 | 2015 及更新款 MacBook Pro,或 2016 及更新款 MacBook | 
| 触控板 | 必须支持 Force Touch(可在「系统设置 ▸ 触控板」中确认) | 
4.2 软件准备
- 
Xcode 16.0 或更高版本 
- 
Swift 6.0 或更高版本 
- 
Git(用于克隆仓库) 
4.3 安装流程
- 
打开终端,克隆仓库 git clone https://github.com/krishrshah/TrackWeight.git cd TrackWeight
- 
双击 TrackWeight.xcodeproj,Xcode 自动打开项目。
- 
在 Xcode 左侧选中项目 ▸ 「Signing & Capabilities」标签 ▸ 关闭 App Sandbox。 必须关闭 Sandbox,否则应用无法读取低阶触控板事件。 
- 
选择菜单 Product ▸ Run,或直接按⌘R,应用会编译并自动启动。
- 
第一次运行时,系统会提示「允许访问输入监控」,进入「系统设置 ▸ 隐私与安全性 ▸ 输入监控」勾选 TrackWeight。
5. 使用方法:三步称重
| 步骤 | 动作 | 注意点 | 
|---|---|---|
| 1 | 打开 TrackWeight 应用 | 主界面会出现实时读数窗口 | 
| 2 | 把手指轻轻放在触控板 | 保持接触,但别用力压 | 
| 3 | 在手指不动的前提下,把待称物体放到手指旁边 | 物体必须接触触控板,但不能压住手指 | 
小技巧:物体若太小,可先用一张折纸当托盘,再把物体放纸上。
6. 限制与易错点
6.1 不能绕开的物理限制
- 
手指必须一直接触:没有手指,触控板不会生成压力数据。 
- 
金属物体可能误触:钥匙、硬币会被系统当成「手指」,导致读数异常。解决:垫一层纸或布。 
- 
最大量程:官方未给出上限,经验表明 300 g 以内误差较小,超过后线性度下降。 
6.2 常见故障排查
| 现象 | 可能原因 | 解决方案 | 
|---|---|---|
| 读数始终为 0 | 没有检测到手指 | 确认手指完全接触触控板 | 
| 数值乱跳 | 手指用力不稳或金属干扰 | 放松手指、垫绝缘层 | 
| 应用无法启动 | App Sandbox 未关闭 | 回到 Xcode ▸ 关闭 Sandbox 重新编译 | 
7. 技术内幕:它到底调用了哪些接口?
TrackWeight 用到了 Open Multi-Touch Support 库(作者 Takuto Nakamura),该库提供:
- 
全局触控事件钩子 
- 
每条触控的坐标、压力、角度、密度 
- 
线程安全的异步流 
- 
Swift 的 async/await支持
应用层用 SwiftUI + Combine 做界面和实时数据绑定。整个项目 MIT 许可证,可放心阅读源码。
8. FAQ:你可能想问的 10 个问题
| 问题 | 回答 | 
|---|---|
| 真的可以精确到小数点后几位吗? | 官方数据以克为单位,实际显示整数克,误差 ±2 g 左右。 | 
| 能称液体吗? | 可以,把液体装在小容器里,再按步骤操作即可。 | 
| 会不会把触控板压坏? | Force Touch 设计承压远高于日常称重,无需担心。 | 
| Windows 能用吗? | 不能,依赖 macOS 私有框架。 | 
| 能否在 M1/M2/M3 芯片上运行? | 可以,只要系统版本满足 macOS 13+。 | 
| 为什么一定要关闭 App Sandbox? | Sandbox 限制应用访问硬件事件,必须关闭才能读取触控板数据。 | 
| 可以称活体昆虫吗? | 理论上可行,但昆虫爬动会导致读数波动。 | 
| 会不会泄露隐私? | 应用只读取压力值,不上传任何数据,可离线使用。 | 
| 如何卸载? | 删除 /Applications/TrackWeight.app,并在「输入监控」列表里取消勾选即可。 | 
| 未来会支持 iPhone 吗? | 项目仅针对 macOS,暂无 iOS 计划。 | 
9. 使用场景灵感清单
| 场景 | 说明 | 
|---|---|
| 烘焙随手称香料 | 1 g、2 g 的酵母、盐,随手就能称,不用搬大秤。 | 
| 邮包验重 | 寄小包裹前,快速确认是否超过首重。 | 
| 实验室小样 | 称量滤纸、小试剂瓶,减少走动。 | 
| 旅行前称重 | 把行李里的电子小物件拿出来单独称。 | 
10. 安全与免责声明
- 
非商业用途:项目定位为实验与教育,不建议用于贸易结算或医疗。 
- 
误差提醒:重要场景请用校准过的专业电子秤复测。 
- 
硬件风险:请勿放置超过 500 g 的重物,以免超出触控板设计载荷。 
11. 结语:把好奇心变成动手实践
TrackWeight 把原本隐藏在驱动层的传感器数据「翻译」成普通人可读的重量,让「称重」这一日常动作多了一种新奇但可靠的解决方案。只要遵循步骤、理解限制,你的 MacBook 就能在关键时刻充当一把应急电子秤。
祝你称重愉快!
