# Keyboard Maestro Markdown 输入加速篇

> 本文公开全文。

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

关于 Markdown 输入的讨论从未断绝，但是大多停留在“能够输入”的层面上，多数软件所谓的 Markdown 符号输入支持，也只是给了一堆快捷键（如 Drafts）或一排按钮（如 Ulysses），鲜有听闻谁能让 Markdown 符号输入更舒服的。而恰恰在这一貌似极其个人化而无从置喙的领域，最能看出设计师的功力——当然，也包括自动化动作的设计者。

软件开发商追求四平八稳，不敢深入太个性化的输入方式，这无可厚非。但是在按钮和快捷键之外，尚有更加自然的输入方式可供探索。这类操作并非“我就是这样觉得”或“我就喜欢”，而是在心手并用的键盘起落之间，既确确实实减少操作量，又明明白白降低记忆量。

本文将借 Keyboard Maestro 此利器，试投代码符号与强调符号之粗砾，以引诸位读者之明珠。

\>\>Keyboard Maestro 动作下载\<\<

## 代码符号

Markdown 符号输入之压力，主要在于中英与符号切换。Markdown 终归是舶来品，其所用符号皆出自洋文，若在中文环境下频频输入，则需时时切至英文输入法或当前输入法的英文模式。虽也有编辑器可以渲染中文环境中的符号，但毕竟不通用，迨转发或投稿，则问题毕现。例言之，仅仅是输入代码符号（即键盘左上角的重音符号，Grave Accent），反复翻转手腕，简直如绣花般复杂：

- 切到英文输入法（英文模式），输入第一个重音符号；

- 切回中文输入法（中文模式），正常打字；

- 切到英文输入法（英文模式），输入第二个重音符号。

熟练者固然洋洋自得，如同掌握了某种复杂的钢琴演奏技巧，施展起来竟也有平仄或起承，但转念一想，这些操作或许并不必要。就这类成对符号而言，早已有人用 AppleScript 整组插入，而不少代码编辑器也会主动检测并自动补全，并把光标移至符号中央，方便继续输入。这类代码碎片流传于各个 Power Users 社区，连著作权都已不可考（我也写过几篇用 Keyboard Maestro 插入成对符号的文章，较近的在UNTAG 的付费栏目第二十二期）。

——但是，你仍然需要记忆一组快捷键。且不论快捷键本何其寸土寸金，在手指纷飞之际，快捷键其实也并非上选。Keyboard Maestro 提供了在快捷键和图形化按钮之外的第三种选择：检测打字规律，并根据刚刚输入的文本触发自动化动作。换言之，你可以：

- 轻轻按动两次重音符号，再像日常打字一样按空格键上屏，旋即插入一组重音符号，表示这里是一段行内代码（code area），而光标也将自动移至中间。

- 连续按动三次重音符号，则插入一个代码框（code block），同样，光标将置于中间行。

插入 code area 或 code block 的部分不值得多言，关键在于触发方式（Trigger）。检测输入两次重音符号并不难，难的是我们可能用到 code area 与 code block 两种呈现代码的形式，如何只用一颗重音符号键兼顾两者？如何避免双击和三级产生冲突？这就涉及了 Keyboard Maestro Typed String Trigger 中的正则模式匹配（regular expression match）。模式匹配设计的妙处在于，你不仅可以检测连按两次重音符号，还可以检测连按两次之后紧跟着按下非重音符号，如此一来，就确确实实区分了双击和三级，不会在按动三次重音符号键时发生冲突。

之所以从代码符号入手，只因其输入方案几乎最难设计，毕竟有两种表示形式，如何不增加记忆量而简化手指动作，需要一些巧思。

顺予指出，Keyboard Maestro 中还有 USB Device Key Trigger，同样可以检测某颗按键是否被按下，但在检测连续按动时可能有一秒的卡顿，并不舒服，故弃之。当然，这里也有美学考量，我是在无法放弃 符号符号\[^符号\] 这种特殊的字符模式。

## 强调符号

一旦解决了代码符号的输入问题，诸如斜体符号（文字两侧各一个 \*）、强调符号（文字两侧各两个 \*）和删除符号（文字两侧各一个 ~）则势如破竹。考虑到斜体符号和强调符号也兼用星号，不妨沿用代码符号的输入方案，让一颗键管两组符号——但是，中文语境下不存在斜体一说，正规做法是换字体，恕我不往这一方向制作自动化动作，仅展示正常输入强调符号的效果与 Keyboard Maestro 步骤。

此番不再必需一颗按键管两组符号，若只考虑动作本身，则只需检测两次星号，不必以非星号堵漏。但是，异于输入代码符号，强调符号也常常在校订审阅时随后插入，此时就有必要多设计一套动作，用于在当前选定的文本两侧增加强调符号，若愿意深挖，则“非模式”仍需保留，而增加星号的交互方式则效仿插入 code block，选择三击。

在选定文本周围增加星号，非 Keyboard Maestro 莫属，盖其中有大量键鼠模拟，细述如下：（1）首先选定文本，接着连续按动三次星号，其间选定的文本会被覆盖；（2）无妨，触发本动作后，Keyboard Maestro 会模拟一次撤销操作，恢复方才随着输入星号被覆盖的文本；（3）接着，正常复制文本，并在其两段增加强调符号后贴上，同时覆盖原文本。

## 小结

正如 Markdown 亦来自民间，Markdown 符号的种种输入方式，也贵在自下而上的一线经验。仅 UNTAG 一隅，也有不少讨论，我在《用 Keyboard Maestro 把任何软件变成 Markdown 编辑器》等文章中已有所涉猎，Apus 也以《在几乎任何Markdown编辑器中快捷粘贴图片》一探图片插入。

以上种种貌似吹毛求疵的输入方式设计，无非探求输入方式的极限，同时也是检测自动化工具的边界。快捷键和现成按钮固然不需要脑筋转弯，看一眼就能学会，却不见得是最好的交互方式。而在单颗本就无法避开的按键上挖空心思，倒也不无所得。

操作电脑一日演奏乐器——键盘本就多多少少承袭了钢琴的结构——演奏单个音符似乎都不难，但想要串联成曲却总觉磕磕绊绊，重要原因之一便是乐手没有找到更易于演奏的替代音，若能抓住，则曲子将更为优雅流畅。

🛍 我撰写的付费栏目《Keyboard Maestro 进阶指引（增订版）》正在 UNTAG 售卖，详解 Keyboard Maestro Macro 高级设计思路，欢迎选购：付费内容链接

---

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