一如不可能因为装帧朴素就丢弃一本好书,理智的人,也不会把界面作为评判电子书阅读软件的唯一标准。对于用 Calibre 管理图书——尤其是 EPUB 电子书——的人士而言,其自带阅读器尽管充满了工业气息,功能却毫无疑问最为齐全。用 Calibre 阅读器看 Calibre 库里的书,足够自然。
惜乎,Calibre 作为一款跨平台软件,抛开美学不谈,至少在交互上也与 macOS 格格不入。若说其他细节我姑且可以习惯,那么,不能调用原生词典一事,就实在说不过去。借 Look Up 机制查词,本是 macOS 的一项系统级功能,几乎在任何地方,看到不懂的词,稍稍用力按一下触控板或使用快捷键,即可调出临时的查词弹窗,恰到好处。
本文尝试借用 Keyboard Maestro,在 Calibre 阅读器中尽可能还原原生 Look Up 查词体验。您可以下载示例 macro,其中的触发方式因适用于我的电脑,建议完整阅读本文,并重新设置。
找回“弹窗”查词
Calibre 阅读器本无通往 Look Up 查词弹窗的途径。这一问题曾不是问题,因为在早几年的 macOS 中,你可以通过 API 轻松访问系统词典,部分自动化工具(例如 LaunchBar)还有基于原生词典数据的查词功能。但在 macOS 权限逐渐缩紧并陆续关闭一部分 API 后,我不得不重新考虑原生机制,问题是,怎样在不使用原生框架开发的 Calibre 中牵线搭桥?
我的思路完全不正常:能不能在 Calibre 阅读器中的所选文本上,覆盖一个足够小的窗口,其中就是被选中的文本,然后就窗口中文本展开查词弹窗?重要的不是某套方法实际上怎么样,而是它工作起来看上去像那么一回事。如果没有低技术贴图(Automator)的经验,我恐怕不会想到那么冷僻的方案。
碰巧,我知道 Keyboard Maestro 中有一个自定义 HTML 弹窗的模块,理论上可以制作出足够不起眼的小弹窗,进而作为查词的跳板。为了让它看上去尽可能不突兀,我取消了窗口标题、令其保持透明、缩小尺寸到半个指甲盖并将窗口置于鼠标之下。工程细节较为复杂,涉及 Token、变量和 HTML 等知识,本文无意一一分析,您只需保持示例 macro 的默认设置。
当然,如果你懂一点 HTML,可以考虑一比一仿照原生 Look Up 查词时文本被选中后的样式,但我不会太追究这些无关乎实用的细节。
读者可能已经发现,上图仅仅显示了弹窗相关的步骤,看 Keyboard Maestro macro 名字,似乎还有下文。确实,弹窗有风险,如果不带标题,将几乎没有办法消除它,为此还需另行制作一个主控 macro,在查词完成后取消弹窗 macro,确保作为跳板的弹窗不会残留的屏幕上。这样,我们画出了 Calibre 查词方案的大致轮廓:
- 选中文本,启用 macro(触发方式见下一节);
- Keyboard Maestro 自动复制当前选中的文本;
- Keyboard Maestro 生成一个跳板弹窗,刚刚选中的文本的就在其中;
- Keyboa
