Karabiner-Elements 是 Mac 键盘自定义的瑞士军刀:它可以重新映射按键、构建层,并运行你用 JSON 编写的规则。其中一种规则可以在按键来自特定键盘时选择输入法。Keyameleon 只做这一件事,而且不需要规则。哪个更好,取决于你是否已经在用 Karabiner-Elements 做别的事。

一览

KeyameleonKarabiner-Elements
它是什么按键盘切换输入法的工具通用的键盘自定义工具
按键盘指定输入法在列表中为每个键盘选择一个输入法编写一条带有设备条件和 select_input_source 动作的 complex modification
如何读取你的输入以只监听模式观察键盘;无法修改或注入输入接管它所修改的键盘,并通过自己的虚拟键盘驱动发送这些键盘的输入
安装一个应用,加上“输入监控”权限一个应用、一个需要你批准的驱动扩展,以及“输入监控”权限
价格和许可证免费,MIT免费,公有领域(Unlicense)

在 Karabiner-Elements 中按键盘切换

Karabiner-Elements 的规则(complex modifications)可以用 device_if 条件限定在某些设备上,匹配键盘的厂商 ID 和产品 ID,或者匹配内置键盘。规则还可以运行 select_input_source 动作,按语言或 ID 选择输入法。把两者结合起来,在某个键盘上按键就能选择该键盘的输入法。

这样可行,但规则要你自己编写和维护,每个键盘一条,还要测试它不会吞掉或改变所匹配的按键。Karabiner-Elements 自己的文档也提醒,由于 macOS 的问题,选择带输入模式的输入法(中文、日文、韩文、越南文)可能会失败,并建议改为发送切换输入法的快捷键。

Keyameleon:同样的事,不用规则

Keyameleon 会列出它找到的每个键盘。你为每个键盘选择一个输入法,包括日语假名、拼音等输入方式,之后只要开始在某个键盘上打字,它就会切换。它从不安装驱动,也从不介入你的键盘和 App 之间:它通过 Apple 的 CoreHID 框架以只监听模式观察键盘,并通过 macOS 文字输入系统更改布局。

出了问题它也会告诉你。当“输入监控”权限关闭、切换已暂停,或者某个已指定的输入法已从 macOS 中删除时,菜单栏菜单都会显示提示。

两个一起用

很多人用 Karabiner-Elements 重新映射按键,同时还想让每个键盘使用自己的布局。需要注意的是,Karabiner-Elements 会从它的虚拟键盘重新发送它所修改的键盘的输入,因此其他应用可能无法再看出按键来自哪个实体键盘。如果 Karabiner-Elements 运行时 Keyameleon 不为某个键盘切换,请在 Karabiner-Elements 的 Devices 设置中,为该键盘关闭 Modify events。

该用哪一个?

  • 你已经在维护 Karabiner-Elements 规则,也熟悉 JSON:在那里加一条设备规则即可。
  • 你只想让每个键盘按自己的布局输入,不要驱动,也不用维护规则:Keyameleon。

想了解包括系统自带方法在内的所有方案,请阅读如何在 Mac 上自动切换键盘布局。