分享一个 Linux 下的改键工具

yadam · 4 天前 · 206 次点击

https://github.com/jialeicui/KeySwift

特点:

  • 配置基于 javascript, 比较灵活
  • 支持基于 window class 进行配置

不足:

  • 目前只支持 gnome
  • 目前不支持鼠标

示例配置

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 的方式

举报· 206 次点击
登录 注册 站外分享
1 条回复  
ho121 小成 4 天前
可以参考 arch wiki https://wiki.archlinux.org/title/Input_remap_utilities
返回顶部