00:00:00我是 Kanata,这是一个能激发键盘无限潜力的开源工具。
00:00:03它可以实现“短按”和“长按”触发不同的按键,
00:00:08用一个按键触发一连串的按键操作,
00:00:10或者为不同的自定义键位映射设置多个层级。
00:00:12对于像我这种尽量只用键盘操作的人来说,这简直太棒了。
00:00:16不过,这种奇奇怪怪的配置语法是怎么回事?
00:00:19而且,既然已经有了 Karabiner 或其他 K 开头的工具,我为什么要用它呢?
00:00:24点下订阅,我们这就开始深入探讨。
00:00:27Kanata 是易洛魁原住民语中“村庄”的意思,
00:00:30其实跟键盘一点关系都没有。
00:00:33但如果你像我一样痴迷机械键盘,你可能听说过 QMK,
00:00:37这是一款非常流行的开源键盘固件,
00:00:39它能让你在键盘信号传给电脑之前就完成键位重映射。
00:00:42Kanata 就像是软件层面的 QMK,
00:00:46因此它支持所有键盘,甚至包括你的笔记本自带键盘。
00:00:49因为它采用 Rust 编写,这意味着它运行极快,
00:00:52打字时几乎感觉不到任何延迟。
00:00:55不过,它的配置并不算简单,
00:00:57因为在 Mac 上通过 Karabiner 安装好 Kanata 后(
00:01:00这点我稍后会详细说明),
00:01:02你需要使用一种受 Lisp 启发的 S-expression 语法来编写配置文件。
00:01:07这可能是我见过的最古怪的配置语法了。
00:01:11通常你会把函数名写在括号外面,
00:01:16但在这种配置文件里,函数名要写在括号里,就在参数旁边。
00:01:21当你开始嵌套函数时,情况会变得更诡异,
00:01:24而这种嵌套在配置中非常常见。
00:01:26因为函数名不在括号外,
00:01:30所有内容都堆在括号里,初看之下非常难以理解。
00:01:35不过,用一段时间后你就会习惯了。
00:01:36举个简单的键位映射例子,假设我想把 A 键映射为 X。
00:01:41我可以使用 defsource 函数来指定源键位,参数设为 A,
00:01:46并至少使用一个 deflayer 函数来指定输出键位。
00:01:50我将其命名为 base,参数设为 X。
00:01:53任何没列在配置文件里的按键都会保持原样。
00:01:57如果再增加 B 和 C 键,并分别映射为 X 和 Z,就像这样。
00:02:02幸运的是,空格和制表符是不受限制的,
00:02:04所以你可以随意调整间距,让配置清晰易读。
00:02:08这个配置文件还能实现更多酷炫的功能。
00:02:10我可以配置 tap-hold(点按长按),让短按和长按触发不同的操作,
00:02:15只需设置好超时时间,再加上你想要的对应按键即可。
00:02:19在这个例子中,短按 A 会触发 X,而长按则会触发 Left Shift。
00:02:24为了简化操作,我还可以用 defvar 函数定义一些变量,
00:02:28这样就能在配置中通过美元符号多次引用,
00:02:32这非常适合设置 Home Row Mods(将起始行按键映射为四个常用修饰键)。
00:02:36老实说,起初这感觉真的很怪,
00:02:39但我现在已经完全习惯了,无法想象没有这种配置该怎么用键盘。
00:02:42我还可以创建一个名为 editor 的新层级 (deflayer),
00:02:46专门用于视频剪辑。我可以为它设置一整套全新的键位,
00:02:51并设置一个切层键来随时切换。
00:02:54如果你想在切换层级或执行其他操作时玩点更酷的,
00:02:58你可以启用 Kanata 的 TCP 服务,让其他应用程序能够监听它。
00:03:03比如我就让 SketchyBar 监听 Kanata,
00:03:06这样当我切换层级时,桌面顶部就会实时显示。
00:03:10没错,达到这种效果确实需要编写大量的配置,
00:03:13但这种事完全可以让 AI 来帮忙。
00:03:16言归正传,既然 Karabiner-Elements 这么强大,为什么还要用 Kanata?
00:03:21毕竟它能做 Kanata 的所有事,甚至更多,
00:03:24比如针对特定应用程序或特定键盘进行键位映射,
00:03:28拥有非常直观的事件查看器来测试按键,
00:03:30还为不喜欢命令行操作的用户提供了精美的图形界面。
00:03:35但对我来说,Karabiner 的 tap-hold 功能(尤其是 Home Row Mods)太弱了。
00:03:40我花了大量的研究和配置才勉强让它工作。
00:03:45而且即便设置好了,用起来也不如 Kanata 顺手。
00:03:49它经常会把“长按”误认成“短按”。
00:03:51而 Kanata 无需任何微调,开箱即用地完美处理了这个功能,
00:03:56这让我完全不想再回到 Karabiner-Elements 了。
00:03:59所以如果你非常看重 Home Row Mods,我建议使用 Kanata。
00:04:03当然,它也并非完美无缺。
00:04:05如果你有不同的键位方案,你可能需要为不同键盘准备多个配置文件,
00:04:09这有点麻烦,因为当你拔掉键盘后,
00:04:12你必须手动运行命令来切换对应的映射。
00:04:15我还发现无法将键盘上的播放/暂停键映射到 F8,
00:04:20而这在 Karabiner 里是可以轻松实现的。
00:04:22此外,为了让 Kanata 兼容 MX Master 鼠标,我也折腾了好一阵。
00:04:26幸运的是,我通过不断摸索代码解决了大部分问题,
00:04:30以后我可能会把这些方案开源出来。
00:04:31我真希望 Kanata 的社区能壮大起来,
00:04:34如果大家能把这个视频分享给朋友和同事,应该会有所帮助吧?