Rust语言开发的跨平台键盘重映射工具 kanata

其实只是想拉人入坑试试水,我自己还完全没用过(
不过既然是安利,还是稍微介绍一下吧,以下内容摘自官方Readme:

  • 支持Linux、macOS和Windows
  • 配置文件易读
  • 支持多层按键映射切换
  • 支持点按-长按映射为不同的键、支持Unicode输出、支持静态/动态宏
  • 支持Vim式的按键序列触发行为
  • 可以运行TCP服务器与其他程序交互
  • 支持 Interception driver(其他Windows平台按键映射软件的常见依赖项目,可以在驱动层面实现映射。此外这个功能是可选的,不是非要依赖这个驱动)

项目地址:

不知道有没有人愿意花时间研究一下这个软件功能怎么样。

用了,非常推荐,配合kanata_tray可以常驻托盘,不过在macOS上体验不太好,因为各种权限问题折腾得不行,kanata最近的更新好像还导致了要求那个karabiner依赖的问题,我是在issuse里面找了个网友版本先用着。

好处是配置好写,当然也要读手册。坏处是非驱动级,这意味着很多地方你用不了,比如:

  1. 超管启动的软件,这种比较少,我手上只有一个pixpin,我设置成禁止超管启动,也就没问题了,如果你有,一定要取消,不然会有bug,啥bug忘了
  2. shell,kanata有个shell版本,可以直接用,但超管权限下的shell或bash还是不能用
  3. 虽说kanata提供了一个驱动级的方案,但不推荐,那个网友开发的驱动好多年没更新了,因为Windows限制,没有找巨硬买签名的驱动好像有设备数限制,可Windows又很蠢地每次睡眠后就会给你的设备重分配一个设备名还是啥,然后多次下来u盘、键鼠就不能用了
  4. 好像还有些别的坑,我给忘了,记起再补充。

总的来说,如果你有space_fn这类大量改键需求,强烈推荐使用kanata,因为他的配置真的方便。类比ahk这种,一行一行改只适用于少量改键。至于karabiner那种灾难级的配置就更不要过来碰瓷了,我见到karabiner那个json配置文件就犯PTSD,根本不是人读的。

然后是reWASD,那个付费就算了,改键方面还是残的。只适用于基础改键,一些稍微进阶的设置都没有,虽说是驱动级,但不推荐想改键的用,大量的直接上kanata,少量的用AHK。

为什么不推荐reWASD呢?举个粟子:辅助键单击。这是个很常见的需求,比如我喜欢设置单击左右shift为一串组合键,这一串组合键又能在rime中切中英文,于是单击左shift可以直接切到英文,右shift到中文,不管当前是什么输入环境,一键切。但reWASD只支持按时间延迟处理键,你拿来做space_fn和这类需求就不行,我问过他们,他们说不会改。所以也就绝了付费心思,再来他们的政治立场也不太合大陆一般认知,那就更不可能付费了。

然后capsicain这个也不推荐,我试用过,kanata有的毛病他也有,配置写起来也没kanata方便,功能上也不如kanata强,kanata的“层”实在好用。

部分人可能会喜欢用可编程键盘,这也是一个选择,而且比驱动更底层,功能也够强,但不支持笔记本内部键盘,所以对我没用,如果只用台式,我倒是推荐大家花点钱买一把,直接解决问题。

最后放几个当时入门找的教程:

  1. 实现 spacefn 的几种方式 - 知乎
  2. Windows系统的窗口管理器横评:任务栏增强+软件分屏+窗口进程保存…… - 知乎
  3. CapsLock 映射 单击 Esc, 组合键 Ctrl - 知乎

至于我自己翻译的手册,因为不全面,只翻译了自己需求的部分,也放到下面吧,OneDrive链接,会随我的更新而更新,不过我基本也不需要更多功能了,所以大概也不会再翻译更多,凑合看吧:

  1. 手册: 【笔记】Kanata.md
  2. 配置: Kanata

手册基本是机翻加一点自己的理解,不要指望多准确,我是写给自己看的。配置包括Windows和macOS两部分,因为两个系统的差异,不能通用。其中Windows较为容易,甚至直接就能用,macOS设置就比较复杂,自己去看仓库、手册和issue吧,也是能跑起来的。

2 Likes

非常感谢你的试用体验,顺便问一下权限相关的问题,能否通过用管理员权限启动kanata来解决?

能解决部分问题,但会带来新的问题,建议是都不用管理员权限启动,其实我看了下手头几个要管理员权限的常驻软件,都没有很大必要用权限启动

说到可编程键盘,我顺便提一下,有一个叫USB2USB的设备,可以把任意USB键盘转换成可编程键盘,原理是在USB键盘和电脑之间加一个额外的设备(大小接近于无线键鼠的USB接收器),在键盘信号进入电脑之前转换一下,相当于一个外置的可编程键盘芯片。想尝试可编程键盘又不想更换键盘设备的可以了解一下。当然这个方案还是不支持笔记本自带的键盘。

另一个点是可编程键盘虽然可以无视平台、程序权限之类的限制,改键的兼容性更强,但论功能性其实未必比软件层面的方案更好。因为它的改键是在键盘固件上实现的,这也就意味着无法与操作系统交互,因此类似于根据当前活动窗口自动切换按键布局之类的功能是无法实现的。
(就我之前的了解是这样的,不过这个圈子我也有几年没关注过了,也许现在有了新的方案可以突破这种限制,但要和操作系统交互,应该无论如何还是无法避免要安装程序,这就导致本身的优势又被削弱了)

可編程器鍵盤主要是穩定啊,特別是能板載那些,基於軟件層面很多時候有問題的,U2U我也有一個,但是Fn沒辦法,衹能再設一個Fn。

macos用 Karabiner-Elements, 直接下载别人写好的json, 按须启用
windows用 ahk, 同上
linux用 keyd-git

以capslock+h/j/k/l 映射为方向键为例

# 添加自启动
sudo systemctl enable keyd

# 添加配置, 把 capslock + hjkl 映射到 vim 移动模式
sudo vim /etc/keyd/default.conf

===
[ids]

*

[main]
capslock = overload(capslock_layer, esc)

[capslock_layer]
esc = capslock

h = left
j = down
k = up
l = right

u = pageup
p = pagedown
i = home
o = end

m = backspace
===

# 启动
sudo systemctl start keyd

是个可选项,但karabiner的配置文件我不想再去碰,特别是你自定义的按键一多,那个配置文件写起来简直是灾难。