Repository navigation
Releases: ZilongYang/zWGestures
Release list
zWGestures 0.3.0
原生 Apple Silicon 鼠标手势工具。按住鼠标右键画一个形状,就执行你为它配置的动作。
这一版的主题是 英文用户也能用:界面支持中英双语(设置里可切换或跟随系统),
顺手把「从原版导入后满屏英文手势名」这件事处理掉了。没有新增手势类功能。
⚠️ 更新之后第一件事:重新授权辅助功能
这个版本没有 Apple 开发者签名,macOS 按构建指纹识别它,所以每更新一版都要重新授权一次。
更新后如果画手势没反应,几乎一定是这个原因。应用会弹一次说明并给出「打开系统设置」按钮,
菜单栏也会写「辅助功能权限:已失效(点击重新授权)」。到
系统设置 › 隐私与安全性 › 辅助功能 里把 zWGestures 取消勾选再勾上即可,不需要重启应用。
下载
| 文件 | 说明 |
|---|---|
zWGestures-arm64.dmg |
推荐。打开后把应用拖进「应用程序」 |
zWGestures-arm64.zip |
同样内容,解压即可 |
SHA256SUMS |
校验和,用来确认下载完整 |
要求:Apple Silicon(M 系列)的 Mac,macOS 14 Sonoma 或更高。
首次安装仍需放行一次(见下),已经装过旧版的按上面那节重新授权即可。
这一版改了什么
1. 界面中英双语,随时可切
设置 › 偏好设置 › 界面语言:跟随系统 / 简体中文 / English。切换后菜单栏与窗口立刻重建。
- 英文界面不是机翻:命令编辑器、手势编辑器、各类弹窗与错误提示都逐条译过。
- 只有日志与调试面板保持中文 —— 那是排查问题用的,不是给用户看的。
- 英文文案比中文长,所以顺便放宽了排版:主设置窗口 900×560 → 1060×700,
手势编辑器 560×640 → 780×740,并去掉了若干按中文长度写死的宽度
(原先英文的「Command type」会被断成两行)。
2. 从原版导入的英文手势名,可以一键改成中文
原版配置里手势名存的就是英文(Close、Web Search…)。这一版:
- 菜单栏新增「把英文手势名改为中文」,点一下逐条对应成中文;
- 首次启动若发现 5 条以上已知英文名,会问一次(改 / 不改,答完不再打扰);
- 用的是原版自带的那张中文译名表,只改表里查得到的名字 —— 你自己起过名字的手势一个字都不动;
- 改写前
ConfigStore会自动备份到配置目录的Backups/,随时可回退。
3. 出厂默认手势备了两份,按界面语言播种
中文界面装完看到「拷贝 / 粘贴 / 关闭」,英文界面看到 Copy / Paste / Close。
两份包除手势名外逐键一致(笔画与命令完全相同)—— 有测试钉住,免得中英文用户的手势行为不一样。
4. 系统权限弹窗也跟着语言走
NSAppleEventsUsageDescription(允许 zWGestures 用 AppleScript / Shell 脚本控制其它应用)现在有
中英两份 InfoPlist.strings,CFBundleLocalizations 同时声明 zh-Hans 与 en。
⚠️ 首次安装需要放行一次
这个版本没有 Apple 开发者签名,也没有公证(公证需要 99 美元/年的付费开发者账号)。
所以下载之后 macOS 会拦你一次 —— 这是预期行为,不是文件损坏。
-
打开 dmg,把
zWGestures.app拖进「应用程序」。不要在 dmg 卷里直接双击运行。 dmg 卷是只读的、随时会被卸载,而且系统会把卷内运行的应用
移置到一个随机只读路径 —— 后果是开机自启注册的是那个临时路径,重启后就失效了。 -
双击打开。它会好像启动了一下又马上退出 —— 那是系统在后台评估之后把它结束了(实测约 20 秒)。
-
打开 系统设置 › 隐私与安全性,往下找到 安全性 一节,会看到
「已阻止“zWGestures”以保护Mac。」,点它右边的 「仍要打开」。在 Finder 里双击时如果弹的是对话框,那个对话框上的按钮放行不了 ——
macOS Sequoia 起苹果已经移除了「按住 Control 点按 → 打开」这条老路,必须去系统设置。 -
回到「应用程序」再双击一次 zWGestures。
-
到 系统设置 › 隐私与安全性 › 辅助功能 里勾选 zWGestures。
没有这个权限,全局手势拦截和合成按键都无法工作。勾选之后不需要重启应用 ——
它会自己发现并把引擎拉起来。 -
完成 —— 开箱就有 48 条手势(名字跟着界面语言走)。
习惯命令行的话,第 3 步也可以用:
xattr -dr com.apple.quarantine /Applications/zWGestures.app(实测:浏览器下载的文件会带 com.apple.quarantine 标记,而 curl -L 下载的不会 ——
原因与完整实测记录见仓库里的 docs/INSTALL.md。)
开箱就有 48 条手势
没装过原版 WGestures 的话,首次启动会载入内置的 48 条手势(全局 45 + Finder 3),
取自原版自己的出厂手势集:画「上」拷贝 · 画「下」粘贴 · 向左后退 · 向右前进 · L 形关闭窗口 ·
C 形切换 App · 「上→下」闭合回路打开 Web 搜索 · 还有音量/亮度/静音/全屏/最小化/睡眠/关机等。
可以直接用,也可以在设置界面里随便改 —— 改名、重画形状、换动作、调优先级、临时禁用,
都不用再手改 JSON。
已经装了原版 WGestures?
首次启动会自动导入你现有的手势,并在弹窗里报告迁移了哪些内容。你的手势、按应用分组、
触发矩阵都会带过来。
原版的配置目录只被读取,绝不会被改写。 zWGestures 的配置写在它自己的
~/Library/Application Support/zWGestures/,并且每次覆盖前都会自动备份(各留最近 10 份)。
你原来的 WGestures 可以继续照常使用;菜单栏里也随时可以重新导入一次。
已知限制
- 仅支持 Apple Silicon。 不做 Intel / Universal 支持 —— 这正是这个项目存在的理由之一:
原版是 x86_64 应用、依赖 Rosetta,而
macOS 27 是最后一个支持 Rosetta 的版本。 - 触发矩阵编辑、边角与滚轮触发尚未实现(这类手势在列表里默认隐藏)。
- 手势分组、动画回放尚未实现。
- 日志与调试面板仍只有中文。
- 已知的既存重复形状(原版配置里就有,任何匹配算法都分不开):
Close/Sleep、Terminal/Activity Monitor、重新打开/Shut Down/退出。
同形状的哪一条生效由列表顺序决定,设置界面里会标出冲突。
许可与致谢
以 MIT 许可证发布。
WGestures 2 是一款出色的鼠标手势工具,它的「手势=操作步骤之和」「手势修饰键」「继承与重载」等
设计是这个项目的直接灵感来源。原版 macOS 版最后一个版本是 2021 年 12 月的 2.3.3。
zWGestures 是独立的重新实现,不是官方版本,与原项目及作者 yingdev(Ying Yuandong)
没有任何隶属关系,也未获其背书;不包含原版的任何二进制、字体、图标或激活码,
兼容性仅限于配置文件格式。(中英双语界面里的中文译名取自原版自带的名字表,
与原版做法一致,只为让导入的手势名与用户在原版里看到的一致。)
如果你还在用原版并且觉得它好用,请去
yingdev.com/projects/wgestures2 支持原作者。
zWGestures 0.2.0
原生 Apple Silicon 鼠标手势工具。按住鼠标右键画一个形状,就执行你为它配置的动作。
这一版是 0.1.0 之后的第一次更新,主题是「把识别和稳定性上暴露出来的问题修干净」:
手势不再被笔画的长短左右;两次导致界面卡死/崩溃的缺陷已修复。没有新增功能。
⚠️ 更新之后第一件事:重新授权辅助功能
这个版本没有 Apple 开发者签名,macOS 按构建指纹识别它,所以每更新一版都要重新授权一次。
更新后如果画手势没反应,几乎一定是这个原因。应用会弹一次说明并给出「打开系统设置」按钮,
菜单栏也会写「辅助功能权限:已失效(点击重新授权)」。到
系统设置 › 隐私与安全性 › 辅助功能 里把 zWGestures 取消勾选再勾上即可,不需要重启应用。
下载
| 文件 | 说明 |
|---|---|
zWGestures-arm64.dmg |
推荐。打开后把应用拖进「应用程序」 |
zWGestures-arm64.zip |
同样内容,解压即可 |
SHA256SUMS |
校验和,用来确认下载完整 |
要求:Apple Silicon(M 系列)的 Mac,macOS 14 Sonoma 或更高。
首次安装仍需放行一次(见下),已经装过 0.1.0 的按上面那节重新授权即可。
这一版修了什么
1. 手势识别改成「按形状」判断,不再被笔画长短左右
上一版匹配时会把整条笔画按总弧长缩放到同一长度再逐点比距离 —— 等于把「每一段占全长的比例」
当成了形状本身。结果是:
- 一条「竖明显更长、横很清楚」的
下→右(一眼就是关闭窗口那个形状)不会被识别,
因为它「横还没画到存储定义那么长」; - 而横画得比竖长时,同一条两段的 L 会被认成三段的
Enter—— 中间那段越长越像;
三段手势也因此会按中间横的长短在Enter/Minimize之间跳。
现在折线类手势按拐角结构判断(每段的方向占 0.85 的权重 + 相对长度),
方向和段数说了算:下→右 就是 下→右,横画多长都算;两段的 L 也不会再被当成三段手势。
「画出去再原路返回」的闭环手势(Web 搜索、退格、删除)保留原来的容差,行为不变。
实测:截图那条竖横比 2.2:1 的 L,到「关闭」的距离从 0.109(不命中)降到 0.063;
竖横比 0.4~4.0 全部命中;真正不同的形状之间仍有 0.283 的余量。
2. 画完手势界面卡死、应用随后退出
两个独立缺陷叠在一起,都在「Web 搜索」这条路径上:
- 每次执行手势都在主线程同步调用辅助功能 API 去取目标窗口标题。这是跨进程调用,
前台应用(浏览器)一旦短暂无响应,就把主线程卡住 —— 实测卡了 47 秒,
期间手势都被识别了,但一个动作都没执行。
现在窗口标题只在 shell 脚本真正需要时才去取,并且在后台取、单次询问限时 0.25 秒。 - 随后在状态栏菜单上崩溃(
SerialExecutorRef::isMainExecutor,与 0.1.0 修复的那两次
是同一族)。根因是菜单栏实现了NSMenuDelegate.menuWillOpen,而这个协议实现继承了主 actor
隔离、入口被插了运行时检查,AppKit 从菜单呈现路径调用它时那个检查自己 fault。
现在菜单改成状态变化时推送刷新,不再实现这个协议回调。
3. Web 搜索手势卡约一分钟 + 崩溃
- 卡死:Web 搜索为了读「选中文字」,会先深拷贝整个剪贴板;而
NSPasteboardItem.copy()
会把每一项的每个数据表示都实体化。如果剪贴板里是一张截图(TIFF + BMP + PSD + PNG,
几十 MB),主线程就会卡上一分钟。现在优先用辅助功能 API 读选中文字(后台、限时、
完全不碰剪贴板);兜底才用 ⌘C,而且只在剪贴板本来就装着文本时才用 ——
你复制过的图片从此不会被这个手势碰。 - 崩溃:急停快捷键
⌃⌥⌘⎋的全局按键监听,处理器写在主 actor 上下文里,
于是被插了同样的运行时检查;而点燃它的是 Web 搜索自己合成的 ⌘C。
现在处理器改成不继承隔离的函数,并且忽略我们自己合成的按键。
4. 顺带:动作不再偶尔「慢半拍」
识别索引原来每 3 秒会跟着应用目录刷新重建一次、还跑在主线程 —— 那正是识别结果交接给命令执行
的那条路。现在只有配置变化才重建,且构建移出主线程。调试面板也新增了两行读数
(idx rebuilds、交接 ms / 最差),方便你自己看到「有没有卡」。
⚠️ 首次安装需要放行一次
这个版本没有 Apple 开发者签名,也没有公证(公证需要 99 美元/年的付费开发者账号)。
所以下载之后 macOS 会拦你一次 —— 这是预期行为,不是文件损坏。
-
打开 dmg,把
zWGestures.app拖进「应用程序」。不要在 dmg 卷里直接双击运行。 dmg 卷是只读的、随时会被卸载,而且系统会把卷内运行的应用
移置到一个随机只读路径 —— 后果是开机自启注册的是那个临时路径,重启后就失效了。 -
双击打开。它会好像启动了一下又马上退出 —— 那是系统在后台评估之后把它结束了(实测约 20 秒)。
-
打开 系统设置 › 隐私与安全性,往下找到 安全性 一节,会看到
「已阻止“zWGestures”以保护Mac。」,点它右边的 「仍要打开」。在 Finder 里双击时如果弹的是对话框,那个对话框上的按钮放行不了 ——
macOS Sequoia 起苹果已经移除了「按住 Control 点按 → 打开」这条老路,必须去系统设置。 -
回到「应用程序」再双击一次 zWGestures。
-
到 系统设置 › 隐私与安全性 › 辅助功能 里勾选 zWGestures。
没有这个权限,全局手势拦截和合成按键都无法工作。勾选之后不需要重启应用 ——
它会自己发现并把引擎拉起来。 -
完成 —— 开箱就有下面那 48 条中文手势。
习惯命令行的话,第 3 步也可以用:
xattr -dr com.apple.quarantine /Applications/zWGestures.app(实测:浏览器下载的文件会带 com.apple.quarantine 标记,而 curl -L 下载的不会 ——
原因与完整实测记录见仓库里的 docs/INSTALL.md。)
开箱就有 48 条中文手势
没装过原版 WGestures 的话,首次启动会载入内置的 48 条中文手势(全局 45 + Finder 3),
取自原版自己的出厂手势集、名字用原版自带的中文译名表:
画「上」拷贝 · 画「下」粘贴 · 向左后退 · 向右前进 · L 形关闭窗口 · C 形切换 App ·
「上→下」闭合回路打开 Web 搜索 · 还有音量/亮度/静音/全屏/最小化/切换 App/睡眠/关机/播放暂停等等。
可以直接用,也可以在设置界面里随便改 —— 改名、重画形状、换动作、调优先级、临时禁用,
都不用再手改 JSON。
已经装了原版 WGestures?
首次启动会自动导入你现有的手势,并在弹窗里报告迁移了哪些内容。你的手势、按应用分组、
触发矩阵都会带过来。
原版的配置目录只被读取,绝不会被改写。 zWGestures 的配置写在它自己的
~/Library/Application Support/zWGestures/,并且每次覆盖前都会自动备份(各留最近 10 份)。
你原来的 WGestures 可以继续照常使用;菜单栏里也随时可以重新导入一次。
已知限制
- 界面目前仅中文。 英文界面仍在路线图上(0.1.0 时写的「排在 v0.2.0」没能兑现,
这一版把力气全用在修复上了),见docs/ROADMAP.md第 15 节。 - 仅支持 Apple Silicon。 不做 Intel / Universal 支持 —— 这正是这个项目存在的理由之一:
原版是 x86_64 应用、依赖 Rosetta,而
macOS 27 是最后一个支持 Rosetta 的版本。 - 触发矩阵编辑、边角与滚轮触发尚未实现(这类手势在列表里默认隐藏)。
- 手势分组、动画回放尚未实现。
- 已知的既存重复形状(原版配置里就有,任何匹配算法都分不开):
Close/Sleep、Terminal/Activity Monitor、重新打开/Shut Down/退出。
同形状的哪一条生效由列表顺序决定,设置界面里会标出冲突。
许可与致谢
以 MIT 许可证发布。
WGestures 2 是一款出色的鼠标手势工具,它的「手势=操作步骤之和」「手势修饰键」「继承与重载」等
设计是这个项目的直接灵感来源。原版 macOS 版最后一个版本是 2021 年 12 月的 2.3.3。
zWGestures 是独立的重新实现,不是官方版本,与原项目及作者 yingdev(Ying Yuandong)
没有任何隶属关系,也未获其背书;不包含原版的任何二进制、字体、图标或激活码,
兼容性仅限于配置文件格式。
如果你还在用原版并且觉得它好用,请去
yingdev.com/projects/wgestures2 支持原作者。
zWGestures 0.1.0
原生 Apple Silicon 鼠标手势工具。按住鼠标右键画一个形状,就执行你为它配置的动作。
用 Swift 从头写成,不依赖 Rosetta;兼容 WGestures 2 的配置文件格式,可以直接导入你已有的手势。
下载
| 文件 | 说明 |
|---|---|
zWGestures-arm64.dmg |
推荐。打开后把应用拖进「应用程序」 |
zWGestures-arm64.zip |
同样内容,解压即可 |
SHA256SUMS |
校验和,用来确认下载完整 |
要求:Apple Silicon(M 系列)的 Mac,macOS 14 Sonoma 或更高。
⚠️ 首次打开需要放行一次
这个版本没有 Apple 开发者签名,也没有公证(公证需要 99 美元/年的付费开发者账号)。
所以下载之后 macOS 会拦你一次 —— 这是预期行为,不是文件损坏。
-
打开 dmg,把
zWGestures.app拖进「应用程序」。不要在 dmg 卷里直接双击运行。 dmg 卷是只读的、随时会被卸载,而且系统会把卷内运行的应用
移置到一个随机只读路径 —— 后果是开机自启注册的是那个临时路径,重启后就失效了。 -
双击打开。它会好像启动了一下又马上退出 —— 那是系统在后台评估之后把它结束了(实测约 20 秒)。
-
打开 系统设置 › 隐私与安全性,往下找到 安全性 一节,会看到
「已阻止“zWGestures”以保护Mac。」,点它右边的 「仍要打开」。在 Finder 里双击时如果弹的是对话框,那个对话框上的按钮放行不了 ——
macOS Sequoia 起苹果已经移除了「按住 Control 点按 → 打开」这条老路,必须去系统设置。 -
回到「应用程序」再双击一次 zWGestures。
-
到 系统设置 › 隐私与安全性 › 辅助功能 里勾选 zWGestures。
没有这个权限,全局手势拦截和合成按键都无法工作。勾选之后不需要重启应用 ——
它会自己发现并把引擎拉起来。 -
完成 —— 开箱就有下面那 48 条中文手势。
习惯命令行的话,第 3 步也可以用:
xattr -dr com.apple.quarantine /Applications/zWGestures.app(实测:浏览器下载的文件会带 com.apple.quarantine 标记,而 curl -L 下载的不会 ——
原因与完整实测记录见仓库里的 docs/INSTALL.md。)
更新之后画手势没反应?
几乎一定是辅助功能授权失效了。这个版本没有 Developer ID 签名,macOS 按构建指纹识别它,
所以每更新一版都要重新授权一次。
这次会明确告诉你:应用会弹一次说明并给出「打开系统设置」按钮,菜单栏也会写
「辅助功能权限:已失效(点击重新授权)」。到辅助功能列表里把 zWGestures 取消勾选再勾上即可,
不需要重启应用。
开箱就有 48 条中文手势
没装过原版 WGestures 的话,首次启动会载入内置的 48 条中文手势(全局 45 + Finder 3),
取自原版自己的出厂手势集、名字用原版自带的中文译名表:
画「上」拷贝 · 画「下」粘贴 · 向左后退 · 向右前进 · L 形关闭窗口 · C 形切换 App ·
「上→下」闭合回路打开 Web 搜索 · 还有音量/亮度/静音/全屏/最小化/切换 App/睡眠/关机/播放暂停等等。
可以直接用,也可以在设置界面里随便改 —— 改名、重画形状、换动作、调优先级、临时禁用,
都不用再手改 JSON。
已经装了原版 WGestures?
首次启动会自动导入你现有的手势,并在弹窗里报告迁移了哪些内容。你的手势、按应用分组、
触发矩阵都会带过来。
原版的配置目录只被读取,绝不会被改写。 zWGestures 的配置写在它自己的
~/Library/Application Support/zWGestures/,并且每次覆盖前都会自动备份(各留最近 10 份)。
你原来的 WGestures 可以继续照常使用;菜单栏里也随时可以重新导入一次。
已知限制
- 界面目前仅中文。 英文界面排在 v0.2.0 的路线图上。
- 仅支持 Apple Silicon。 不做 Intel / Universal 支持 —— 这正是这个项目存在的理由之一:
原版是 x86_64 应用、依赖 Rosetta,而
macOS 27 是最后一个支持 Rosetta 的版本。 - 触发矩阵编辑、边角与滚轮触发尚未实现(这类手势在列表里默认隐藏)。
- 手势分组、动画回放尚未实现。
这个版本里有一件值得单独说的事
开发期间发现并修掉了一个会让整台 Mac 输入冻结、只能按住电源键强制关机的缺陷。
事件拦截器原来会捕获键盘事件,而拦截器的回调是同步的:系统必须等回调返回才投递该事件。
鼠标移动可以被合并,回调慢一点只是轨迹变粗;键盘事件无法合并,所以回调一旦错过系统的截止时间,
打字就会整机失效。更糟的是旧实现在系统因超时禁用它之后立刻无条件重新启用,把系统反复拖回
一个跟不上的拦截器 —— 实测日志里它在一节课的时间里被系统摘掉了 42 次。
现在拦截器完全不碰键盘(急停快捷键改用不吞事件的监听实现),超时后退避 0.5 秒再启用,
并且在一段窗口内超时过多时主动停用自己并弹窗说明,而不是无限重试。这两条都有单元测试守着。
完整的证据链、根因与「为什么偏偏那次会话」的诚实结论,见仓库里的 docs/ROADMAP.md §13。
许可与致谢
以 MIT 许可证发布。
WGestures 2 是一款出色的鼠标手势工具,它的「手势=操作步骤之和」「手势修饰键」「继承与重载」等
设计是这个项目的直接灵感来源。原版 macOS 版最后一个版本是 2021 年 12 月的 2.3.3。
zWGestures 是独立的重新实现,不是官方版本,与原项目及作者 yingdev(Ying Yuandong)
没有任何隶属关系,也未获其背书;不包含原版的任何二进制、字体、图标或激活码,
兼容性仅限于配置文件格式。
如果你还在用原版并且觉得它好用,请去
yingdev.com/projects/wgestures2 支持原作者。