pengchujin/MacTV
# 技术雷达学习卡:MacTV
一、一句话定位
MacTV 是一款 macOS 菜单栏应用,通过 HDMI-CEC 协议实现 Mac 与电视的双向遥控——既可用 Mac 键盘控制电视音量/电源/输入源,也可用电视遥控器控制 Mac 的播放、鼠标移动及应用切换。
二、核心技术/架构亮点
- HDMI-CEC 原生通信:直接调用 macOS 非公开 IOKit 接口发送 CEC 指令,无需 Wi-Fi 或额外硬件。
- 双向控制映射:将 Mac 键盘音量键映射为电视 CEC 音量指令;将电视遥控器按键映射为 Mac 媒体控制(播放/切歌)与鼠标模式(6 档速度、长按加速、右击)。
- SwiftUI + AppKit 混合架构:菜单栏组件与设置界面采用 SwiftUI,深层系统 API 调用依赖 AppKit。
- 原生体验:支持 macOS 14+(Apple Silicon)、浅色/深色模式、VoiceOver 及中/英/繁体中文。
- 无依赖/无遥测:不依赖 BetterDisplay,不含遥测,本地诊断日志可随时检查。
三、适用场景与目标用户
- 场景:电视作为 Mac 外接显示器,需要统一遥控体验;想在 Mac 上直接调电视音量/切换 HDMI 源;或用电视遥控器操作 Mac(看视频、翻页、简单光标)。
- 目标用户:拥有 Apple Silicon Mac(macOS 14+)、电视支持 CEC(常见品牌如 Sony、LG、Samsung、TCL、Redmi 等)、使用 HDMI 直连或兼容转换器的用户。
四、可动手动作
1. 快速体验:`brew install --cask pengchujin/tap/mactv` 安装,开启电视 CEC,在“隐私与安全性→辅助功能”授权后即可使用。
2. 自行构建:`git clone` 项目,用 Xcode 打开 `MacTV.xcodeproj`,选择自己的开发者团队后 `Product → Archive`。
3. 测试与验证:运行 `swift test` 和 `python3 scripts/validate-localizations.py`。
4. 借鉴思路:研究 `IOKit` 的 CEC 通信方法(非公开,需反编译或逆向),学习如何在菜单栏 App 中融合 SwiftUI 与 AppKit。
五、学习优先级
P0(本周动手) — 直接安装使用,感受 HDMI-CEC 在 Mac 上的真实交互,作为理解硬件协议与系统 API 结合的样板项目,无需深入即可收获实用工具。⌂