Skip to content

Releases: imbbbbb/anticater-for-mac

1.2.2

Choose a tag to compare

@imbbbbb imbbbbb released this 12 Sep 11:33

修复

灯效读不到时不再让整次连接失败(#1)

部分批次的固件(握手应答中版本号为 0x00)不响应读调色板命令。此前这个超时会让整次连接失败,用户连按键配置都无法读取和修改。

现在读不到灯效即按该固件不支持处理:灯效一栏自动禁用并给出说明,按键配置不受影响。

安装

应用为 ad-hoc 签名,未经公证,首次打开会被 Gatekeeper 拦截:

  • macOS 14 及更早:右键点击图标选择「打开」,在系统提示框中再次点击「打开」。
  • macOS 15 及更高:先双击一次(会被拒绝),再进入「系统设置 → 隐私与安全性」,在底部找到该应用并点击「仍要打开」。

仅支持 Apple Silicon 机型,要求 macOS 13 或更高版本。

1.2.1

Choose a tag to compare

@imbbbbb imbbbbb released this 12 Sep 00:37

体验修复,建议在 1.2 基础上更新。

修复

没插数据线时不再反复弹出报错弹窗。 主窗口每显示一次就尝试连接一次,失败就弹一个模态框——菜单栏应用关窗再开是常事,所以只用蓝牙的人每次开窗都会被拦一道。没插线属于预期状态而非错误,现已改为静默处理,编辑区会说明当前情况;只有你主动点「连接旋钮」才会给一个自动消失的提示。设备被占用、连接中途失效这类真正的错误仍然弹窗。

「没找到旋钮」的友好提示此前从未生效。 判断条件写错了,导致显示的一直是底层原文。已修正。

不再提示「点右上角的连接按钮」。 插上数据线本来就会自动连接,这句文案把兜底写成了正常路径。工具栏里的「连接旋钮」仅用于收不到插拔事件的场景,例如退出占用设备的原版软件之后。

说明修正

此前的文案说「修改配置需要 USB 数据线」,容易让人以为读取配置可以走蓝牙。实情是读取和修改都需要数据线:读配置同样要发送查询报文并等待应答,与写入共用 0xFF00 通道。

已核实蓝牙侧的报告描述符:仅声明数字化仪、键盘、多媒体三个顶层集合,不含厂商自定义页,因此蓝牙链路上不存在配置通道。原版软件在纯蓝牙状态下同样只显示「请用数据线连接设备」。

蓝牙连接时也不会再显示自相矛盾的「没找到旋钮」——此时会明确说明旋钮已通过蓝牙连上,但配置需要插线。

安装

下载 DMG,把 app 拖进「应用程序」。应用为临时签名,首次打开需在「系统设置 → 隐私与安全性」中点「仍要打开」。

仅支持 Apple Silicon(arm64)。

1.2

1.2

Choose a tag to compare

@imbbbbb imbbbbb released this 12 Sep 00:19

修复

部分机器插上旋钮却提示「没找到旋钮」。

macOS 里一个 USB 接口对应一个 IOHIDDevice,接口上有多个顶层集合时,PrimaryUsagePage 只等于排在最前面那个集合的页号,其余的仅出现在 DeviceUsagePairs 里。1.1 只按 PrimaryUsagePage 匹配,于是固件把厂商配置集合排在键盘集合之后的机器就一直匹配不上。1.2 改为按 usage pairs 逐条查找。

如果你此前遇到「原版软件能连、这个连不上」,请更新到 1.2。

新增

  • 诊断信息窗口(菜单栏 →「诊断信息…」,报错弹窗里也有入口):列出本机 HID 设备清单和本次运行的事件日志,先看清内容再决定拷贝,可直接贴进 issue。
  • 事件日志:记录连接、打开、读写操作及其结果。仅存在于内存中,不写磁盘,退出应用即消失,固定保留最近 500 条。默认不记录报文内容,因此不包含你配置的按键与宏;排查协议问题时可在诊断窗口临时打开「记录详细日志」,该开关不会持久化。
  • anticater-dump --diagnose:同一份诊断报告的命令行版本,随 app 一起安装,无需开发工具:
    "/Applications/ANTICATER 原生版.app/Contents/MacOS/anticater-dump" --diagnose
    

安装

下载 DMG,把 app 拖进「应用程序」。应用为临时签名,首次打开需在「系统设置 → 隐私与安全性」中点「仍要打开」,详见 README。

仅支持 Apple Silicon(arm64)。

1.1

1.1

Choose a tag to compare

@imbbbbb imbbbbb released this 07 Sep 14:17

macOS 原生 arm64 实现,无需 Rosetta 2。要求 macOS 13 或更高版本。

本次更新

稳定性

  • 修复设备断开或重新连接时的一处释放顺序问题。回调此前是在工作线程上注册的,而注销发生在主线程,导致注销实际未生效,遗留的回调指针可能指向已释放的对象。现改为在同一线程上显式关闭。
  • 修复工作线程的引用环,此前工作线程会持有其所有者,使二者均无法释放。
  • 输入缓冲区改为随连接生命周期管理,不再在每次读取时分配。
  • 设备枚举改为直接按厂商自定义页 0xFF00 匹配,不再枚举全部 HID 设备后逐一筛选。

功能

  • 新增应用图标。
  • 新增更新检查。启动时自动检查一次,也可在菜单栏中手动触发;可通过「启动时检查更新」关闭。该请求为本软件唯一的联网行为,不携带任何标识信息。

其它

  • Bundle ID 改为 io.github.imbbbbb.anticater。在 1.0 中开启过「开机时自动启动」的用户,升级后需要重新开启一次:登录项的注册与 Bundle ID 绑定,旧的注册不会自动继承。
  • 界面代码拆分为独立的 AntiCaterUI 目标,以便 DeviceModel 的状态机能够被测试覆盖。新增 22 项测试(连接、拔线重连、写入失败、静默拒绝、版本比较),测试总数 38 项。
  • 补充英文 README 与界面截图。

安装

应用为 ad-hoc 签名,未经公证,首次打开会被 Gatekeeper 拦截。请右键点击图标并选择「打开」,在系统提示框中再次点击「打开」。

运行不需要「输入监控」等隐私权限。修改配置需连接 USB 数据线,蓝牙侧不提供配置接口。

说明

本项目为非官方实现,与 ANTICATER 厂商无隶属关系,亦未获得其认可,不包含原版程序的任何代码或二进制文件。未实现固件升级或刷写功能。

部分协议编号为推断结果,详见 README 的「协议说明」一节。

ANTICATER 原生版 1.0

Choose a tag to compare

@imbbbbb imbbbbb released this 07 Sep 06:37

ANTICATER 桌面音量旋钮配置工具的 macOS 原生版本,首个正式发布版。

在原版 app 的基础上二次开发,功能与协议与其保持一致,代码使用 Swift + SwiftUI 重新实现,不包含原版的任何源码或二进制文件。原版为 x86_64 单架构 Qt 程序,在 Apple Silicon 设备上需经 Rosetta 2 运行;本版本为原生 arm64,并按 macOS 平台惯例重新设计了界面。

功能

  • 配置旋钮的五个物理动作:左旋转、右旋转、按压、长按左旋、长按右旋
  • 每个动作支持单个按键、组合键、多媒体、鼠标划屏、Procreate 预设五类功能
  • 灯效切换、菜单栏常驻、开机自启
  • 修改先暂存于编辑区,提交前可放弃;写入后自动回读校验,未写入成功的项目会明确列出
  • 数据线热插拔后自动重连,未提交的修改保留在编辑区

环境要求

macOS 13 或更高版本。修改配置需连接 USB 数据线,蓝牙侧为独立的 HID 设备,不提供配置接口。配置保存在旋钮固件中,设置完成后无需保持本软件运行。

安装

下载 ANTICATER-for-Mac-1.0.dmg,将应用拖入「应用程序」。

应用为 ad-hoc 签名,未经公证,首次打开会被 Gatekeeper 拦截。请右键点击图标并选择「打开」,在系统提示框中再次点击「打开」;直接双击无法通过。

运行不需要「输入监控」等隐私权限。

说明

设备协议无公开文档,本项目的实现基于对自有设备通信过程的观察。部分编号为推断结果,并非全部经过验证,代码注释中逐条标注了各项来源。其中 Procreate 预设的 31 个键码经过验证,而键码与名称的对应关系为推断结果,仅首尾两条经过独立验证,使用时建议以键码为准。详见 README。

本项目未实现固件升级或刷写功能。

许可

PolyForm Noncommercial License 1.0.0,仅供非商业使用。

本项目为非官方实现,与 ANTICATER 厂商无隶属关系,亦未获得其认可。