搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

musubipapi/airpointer

效率与系统工具

把合盖的 AirPods Pro 充电盒变成 Mac 的移动指针和点击设备。

180
26
Swift
MIT
今天创建

项目介绍

AirPointer 把合盖的 AirPods Pro 充电盒当成 Mac 的指针:移动充电盒就能移动光标,轻敲充电盒正面即可点击。项目用 Swift 构建,并配有辅助程序,分别负责建立蓝牙连接、读取运动数据、识别敲击和维持音频链路。

项目对工作原理的说明比较完整:运动数据会被换算成屏幕坐标,朝向敲击方向的突然移动会被识别为点击,会话期间应用会关闭 Mac 声音和麦克风在 AirPods 上的输出。为了保持音频链路,应用会向 AirPods 播放静音;当光标小于 2× 时,还会通过私有 macOS 调用临时放大光标。它的适用对象是已拥有兼容 AirPods 和 Mac、并愿意从源码构建应用的用户。

构建与试用

需要已与 Mac 配对的 AirPods、Xcode,以及 Apple Silicon 上的 macOS 26;目前只在同一台 Mac 和同一副 AirPods Pro 3 上测试过。AirPods Pro 2 可被识别,但未测试。

在仓库目录中构建并打开应用:

zsh ./build.sh
open AirPointer.app

构建过程还会运行自检和敲击检查。不要在指针会话进行中构建。首次打开应用时,设置分为四步:在辅助功能列表中允许 AirPointer;打开再合上盒盖、让充电盒正立以完成连接;指向三个点完成校准;敲击充电盒正面三次。在任意应用中按 fn ⌃ 连接,再按一次暂停或继续;快捷键可在设置中修改。会话结束后,打开再合上盒盖即可再次连接。

如果重新构建后 AirPointer 没有出现在辅助功能列表中,运行:

tccutil reset Accessibility local.airpointer

使用约束

兼容范围窄,而且部分情况没有验证:只测试过 AirPods Pro 3、macOS 26 和 Apple Silicon;会话中强制退出、休眠唤醒、蓝牙断开以及通话都没有被刻意测试。每次连接会让 AirPods 的蓝牙链路短暂断开,音频也会停止,因此不要在通话中连接。会话期间,应用会关闭所有 AirPods 上的 Mac 声音和麦克风,并在会话结束后、或在强制退出后下次打开应用时恢复。

合盖约 30 分钟后会话会结束。README 将原因归于耳机固件中的计时器,并给出了读取固件得到的地址和时长,同时说明还没有通过实时抓包确认。结束会话会消耗充电盒中存储的诊断数据,部分 AirPods 连接设置也可能保持会话时的状态。应用移动光标和点击需要辅助功能权限,放大光标则使用私有 macOS 调用。代码采用 MIT 许可证,但 Assets/ 不在该许可证覆盖范围内,另有单独授权。

HotRepo 点评

该项目在 HotRepo 的新项目榜上首次出现于 2026-11-06,记录到约十小时增长窗口内新增 125 个 Star 和 13 个 Fork。这个单日首次快照说明它一开始就受到关注,但没有更长时间序列可用于判断热度是否延续。它的亮点更多在于把一个范围很窄、方式特殊的硬件玩法讲清楚:明确列出测试过的 AirPods 型号、30 分钟会话上限对应的固件地址,以及尚未测试的情况。限制也同样清楚:使用非测试过的 Pro 3 配置时,用户处于未经确认的支持范围之外;应用需要从源码构建,并未提供现成安装包。

项目源码与说明

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论