Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mac-haptic-actuator

在 macOS 上通过 MultitouchSupport.framework 的私有 MTActuator API 驱动 MacBook Force Touch 触控板的 Taptic Engine。

⚠️ 这是实验性项目,使用 Apple 未公开的私有 API。它不适用于 App Store;macOS 更新后可能失效。请仅在自己的设备上短时间测试。

功能

  • 单次触觉脉冲
  • 通过强度参数控制预置波形的调制强度
  • 保持 actuator 打开并持续发送脉冲
  • 不依赖 shell while 反复启动进程,因此连续模式间隔更小

硬件与自由度

MacBook Force Touch 触控板的 Taptic Engine 是单轴横向执行器。这个项目控制的是系统预置 actuation(当前使用 ID 6),而不是任意二维方向或空间位置。

intensity0.0–1.0 的软件调制参数:

  • 0.0:最弱
  • 1.0:当前接口允许的标准上限附近

它不等价于经过测量的物理振幅,也不保证是硬件绝对最大输出。持续模式是快速重复预置脉冲,不是未经验证的任意原始波形发生器。

系统要求

  • macOS
  • 内置 Force Touch 触控板,或兼容的 haptic trackpad
  • Xcode Command Line Tools(提供 clang
  • 从非 sandbox 的 Terminal 运行

当前代码通过运行时 dlopen/dlsym 加载私有框架,避免链接公开 SDK 中不存在的头文件声明。

构建

cd /Users/dtw/Desktop/better_touchpad
make

也可以直接编译:

clang -Wall -Wextra -O2 \
  -o mtactuator_demo mtactuator_demo.c \
  -framework CoreFoundation \
  -framework IOKit

用法

单次震动

./mtactuator_demo intensity 0.8

强度必须在 0.01.0 之间:

./mtactuator_demo intensity 0.2
./mtactuator_demo intensity 0.5
./mtactuator_demo intensity 1.0

持续震动

./mtactuator_demo continuous 0.8

Ctrl-C 停止:

持续模式:strength=0.800,按 Ctrl-C 停止
^C

实现会在同一进程内保持 actuator 打开,并约每 30 ms 提交一次 ID=6 脉冲。实际硬件或固件可能合并、丢弃过快的请求,因此不保证精确的 33 Hz 输出。

建议先使用较低强度、短时间测试:

./mtactuator_demo continuous 0.3

常见问题

kIOReturnNotPermitted

通常表示进程无法访问触控板服务。请确认:

  1. 从普通 Terminal 直接运行,而不是 App Sandbox 应用;
  2. 已在“系统设置 → 触控板”中开启触觉反馈;
  3. 设备确实有 Force Touch/haptic actuator;
  4. 没有被其它低层触控板工具独占。

返回成功但没有感觉

kIOReturnSuccess 只表示请求被提交,不代表用户一定能感受到反馈。可以尝试:

./mtactuator_demo intensity 1.0

如果仍无反馈,先使用系统设置或 Finder/触控板的正常 Force Click 确认硬件工作正常。不同 macOS 版本和机型的私有波形行为可能不同。

持续模式无法停止

在运行该命令的同一个 Terminal 窗口按 Ctrl-C。如果进程确实没有退出,可使用:

pkill -INT mtactuator_demo

安全与兼容性说明

  • MultitouchSupport.framework 是 Apple 私有框架,符号和 ABI 没有稳定保证。
  • 本项目不修改系统文件,也不安装驱动或内核扩展。
  • 不要长时间以高强度运行持续模式;触觉执行器、触控板和电源管理策略可能限制输出。
  • 不要在无人看管的情况下运行持续模式。
  • Apple Silicon、Intel、内置触控板和外接 Magic Trackpad 的行为可能不同。
  • 本项目仅供学习、研究和个人设备实验使用。使用者自行承担硬件、系统或数据风险。

许可

本项目采用 MIT License。Apple 的系统框架和私有 API 不属于本项目的授权范围。

参考资料

免责声明

本软件按“现状”提供,不提供任何明示或默示保证。作者不对因使用本项目造成的硬件损坏、系统异常、数据丢失或其它损失负责。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages