xkeysnail 使用指南
文章目录
【注】本文最后更新于 November 3, 2019,文中内容可能已经过时。
Emacs keybings Everywhere!
简介
xkeysnail 是一个非常强大的 keyboard remapping 工具, 它类似于 xmodmap, 但更为灵活. 不仅能重映射键位, 还能重映射快捷键, 甚至能在不同的程序下使用不同的映射!
再也不用两套快捷键换来换去了!! ( 早点知道这个东西, 我就不至于练就一身无缝切换快捷键的毫无卵用的本领了…
项目地址: https://github.com/mooz/xkeysnail
安装
Arch Linux
|
|
Other
|
|
注: 官方文档里使用的是 sudo pip
来安装, 但不推荐这样做. 尤其是 pip 这种辣鸡包管理器, 很容易把系统的包管理搞乱.
用法
首先下载 官方示例, 然后用以下命令执行
|
|
不出意外地话应该没有报错, 然可以切换到一个不支持 Emacs 快捷键的环境, 比如浏览器. 试一下 C-a, C-e 等基本的快捷键是否能工作.
如果遇到 Xlib.error.DisplayConnectionError: Can't connect to display ":0.0": b'No protocol specified\n'
这样的错误, 可以尝试
|
|
其中 xhost 命令需要通过 pacman -S xorg-xhost
安装
如果你有热插拔键盘的需求, 还需要加上 -watch
开关
编写 config.py
如果你是 Emacs user 的话, 基本上直接使用官方配置就行了…最多加一下白名单, 比如我的 Alacritty 和 JB 家的 IDE 都是 Emacs 风格快捷键, 就可以排除它们了.
运行
xprop WM_CLASS
, 然后点击目标窗口, 就可以获得这个窗口的 wm_class
如果打算自己编写的话也非常容易, 官方示例有详细的注释, 可以照着示例来写.
我遇到的唯一一个坑是我的 Compose 键占用了右 Ctrl, 然后导致有些快捷键不起作用 ( 我也不知道为什么这些快捷键会使用右 Ctrl…) 所以如果你配置了其他键盘映射程序建议暂时关掉, 免得出现莫名其妙的错误.
自动启动
启动 xkeysnail 后, 我们基本上可以在每个应用里都愉快地使用 Emacs 风格的快捷键了. 但是还缺一个自动启动, 推荐编写一个 systemd 服务来完成. ( systemd 是个好东西, 应该多多使用 )
赋予当前用户必要权限
这个步骤的目的是让 xkeysnail 不需要 root 权限也能执行.
首先我们增加一个 uinput 组
|
|
然后将当前用户添加到 input 和 uinput 组中
( 这个步骤似乎并不是即时生效的, 执行完这条命令可以用 groups
查看一下当前用户所属的组, 如果没有 input & uinput 的话可以重启或者重新登录试试 )
|
|
然后编写两个 udev 规则, 放在 /etc/udev/rules.d/
下
input.rules
|
|
uinput.rules
|
|
接着应用这两条规则
|
|
编写 service
|
|
将以上代码保存为 ~/.config/systemd/user/xkeysnail.service
,
然后执行 systemctl --user --now enable xkeysnail.service
.
完成了! 享受到处都能使用 Emacs 风格快捷键的快感吧!
顺便列举下 systemd 的常用操作 ( 推荐 alias userctl='systemctl --user'
)
userctl status xkeysnail.service
查看服务状态userctl restart xkeysnail.service
重启服务journalctl --user -u xkeysnail.service
查看完整日志journalctl --user -f -u xkeysnail.service
查看最近日志
参考资料: https://qiita.com/samurai20000@github/items/2e1d779e806a7e8543d6`