https://github.com/jialeicui/KeySwift
特点:
- 配置基于 javascript, 比较灵活
- 支持基于 window class 进行配置
不足:
示例配置
const curWindowClass = KeySwift.getActiveWindowClass();
const Terminals = ["kitty", "Gnome-terminal", "org.gnome.Terminal"];
const inTerminal = Terminals.includes(curWindowClass);
KeySwift.onKeyPress(["cmd", "v"], () => {
if (curWindowClass === "com.mitchellh.ghostty") {
KeySwift.sendKeys(["shift", "ctrl", "v"]);
return
}
if (inTerminal) {
KeySwift.sendKeys(["cmd", "shift", "v"]);
}
});
背景:
我个人比较喜欢 macOS 下的快捷键方式, 一部分是 Cmd+xxx 对 terminal 和 vim-mode 的编辑器比较友好, 一部分是绝大部分编辑框都支持 emacs 方式的编辑
用了 xremap 两年多, 很好用, 但是偶尔会出些问题, 某些 modifier 键的处理可能有 corner case, 会卡在 pressed 状态, 又不会 rust, 用 go 写了一个, 用来学习+自己方便按照自己的思路搞搞
获取当前窗口的功能评估了很多方案, 最后还是采取了 xremap 的 gnome extension 的方式
|