把 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. 校准:从「原始数据」到「可信克数」

开发者用了一个非常朴素的办法验证准确性:

  1. 把 MacBook 直接压在传统电子秤上。
  2. 用同一组已知砝码(50 g、100 g、200 g……)。
  3. 同时记录触控板读数和电子秤读数。
  4. 发现两者线性度很好,直接以克为单位即可,无需复杂换算。

换句话说,你看到的数字就是克,不需要额外乘系数。


4. 安装步骤:一步步跟着做

4.1 硬件与系统要求

项目 最低要求
操作系统 macOS 13.0 及以上
机型 2015 及更新款 MacBook Pro,或 2016 及更新款 MacBook
触控板 必须支持 Force Touch(可在「系统设置 ▸ 触控板」中确认)

4.2 软件准备

  • Xcode 16.0 或更高版本
  • Swift 6.0 或更高版本
  • Git(用于克隆仓库)

4.3 安装流程

  1. 打开终端,克隆仓库

    git clone https://github.com/krishrshah/TrackWeight.git
    cd TrackWeight
    
  2. 双击 TrackWeight.xcodeproj,Xcode 自动打开项目。
  3. 在 Xcode 左侧选中项目 ▸ 「Signing & Capabilities」标签 ▸ 关闭 App Sandbox

    必须关闭 Sandbox,否则应用无法读取低阶触控板事件。

  4. 选择菜单 Product ▸ Run,或直接按 ⌘R,应用会编译并自动启动。
  5. 第一次运行时,系统会提示「允许访问输入监控」,进入「系统设置 ▸ 隐私与安全性 ▸ 输入监控」勾选 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 就能在关键时刻充当一把应急电子秤。

祝你称重愉快!