# 巧用 Keyboard Maestro，输入数字自动转为中文大写

> 本文开放前 70% 正文，剩余内容会员可见。

原文：https://utgd.net/article/20525

我从事法律工作，常常需要输入中文大写的数字，比如“《中华人民共和国民法典》第一千零九十二条”或“五百九十六万一千零五十元”。前一类情况还好，后一类就比较麻烦了，而人脑天生对数字就不敏感，总是稍微转一下弯才能把一串阿拉伯数字翻译成中文，而稍微一个不小心，就可能多看一位数字或少看一位。我就遇到过在缴费窗口和工作人员起争执的律师，一核对，才发现他自己把二十万写成了两百万——当然，法律工作有多个核对环节，一处笔误或许不至于出人命，但这种错误很影响别人对你的看法。

为了避免出错，我想，能不能用自动化工具把阿拉伯数字转换成“几万几千几百几十几”这样的格式？这事儿本身好办，我找 ChatGPT 讨了一段代码，转换工作马上解决了；问题在于，如何设计自动化工具，令输入更自然？

两种最容易想到的交互是：

1\.先输入一段数字，然后选中它，按一个快捷键，实现转换（Popclip 模式）； 2\. 弹出一个输入框，要求输入数字，输入后自动转换（LaunchBar 模式）。

这两种交互都会暂时离开当前输入界面，打断连贯的文字编辑操作，似乎有些小题大做。实际上，正因为不满意交互方式，我搁置了相关方案很久。后来读到 Sayz Lim 的 Quick Calculation Keyboard Maestro Macro 一文中，我才把 Keyboard Maestro Typed String 这块拼图添上，完成了相对流畅的数字转换 Macro：

Keyboard Maestro 动作下载

在上图中，我先输入一串阿拉伯数字，然后连按两次冒号，就会激活对应的 Keyboard Maestro Macro，将方才输入的数字串转换为中文大写。例如输入 《中华人民共和国民法典》第685\:\:条，就能得到 《中华人民共和国民法典》第六百八十五条。

在 Macro 设计上，有两个知识点。首先是特殊的 Typed String 触发方式，Typed String 可能诸位已有所耳闻，这一机制常用于文本替换，macOS 本身就支持将 msd 这样的字符替换为 马上到，而 Keyboard Maestro 则走得更远，不仅可以识别静态的预设文本，也可以预先编写正则表达式，识别一类字符。此番用到的表达式是 \\d\+\:\:，\\d\+ 表示一串数字，\:\: 则是其本来意思即两个连续的冒号，后者相当于真正的开关，只有连续输入两个冒号时 Keyboard Maestro 才会动手——这种输入本身就非常不寻常，但如

---

[前往标准阅读页](https://utgd.net/article/20525?audience=web)
