我是 vim/nvim 用户,过去几年xcape已成为我的一个关键功能。
我将它与 gnome-tweaks(新软件包名称,在以前的版本中是 gnome-tweak-tool)结合使用,以便:
CapsLock
与Ctrl
另一个键组合使用CapsLock
当Esc
我单独使用它时使用它。
我使用的 xcape 命令是:
xcape -e 'Caps_Lock=Escape'
在我从Ubuntu 20.04迁移到Ubuntu 22.04之后,此命令不再按预期工作。
当我跑步时,xcape -d
我注意到:
- Ubuntu 20.04无论我在哪个窗口中,每个关键事件都会被拦截。
- 来自终端/文本编辑器/文件的Ubuntu 22.04关键事件未被拦截,但当我在 Chrome 上时它们被拦截。
有谁知道这种行为的原因?这很烦人!
预先感谢您的帮助!
编辑:
@vanadium 的回答帮助我重新开始xcape -d
工作。
不幸的是,我使用的自动启动服务不再工作:
[Desktop Entry]
Type=Application
Exec=xcape -e 'Caps_Lock=Escape'
Name=Keyboard Setup
Comment=Custom keyboard setup
经过一些研究和尝试,我终于让它工作,只是以这种方式更新条目:
[Desktop Entry]
Type=Application
Exec=xcape -d
Terminal=false
Name=Keyboard Setup
Comment=Custom keyboard setup
X-GNOME-Autostart-enabled=true
一开始,我尝试使用 fork 进程nohup xcape -d &
并创建一个系统服务,但收效甚微。
这种行为的原因是您现在运行的是 Wayland 而不是 Xorg。作为升级用户进行全新安装的两个用户都将移至 Wayland。
Wayland 实施安全措施以扩展破坏功能。其中之一是程序不能再拦截击键。
终端/文本编辑器/文件是原生的 Wayland 程序。然而,谷歌浏览器运行在 xwayland 上,这是 Wayland 中的一个模拟层,允许运行需要 Xorg 的程序。
xcape
将适用于在 xwayland 上运行的所有程序。有两种可能:
移至 Xorg。注销,在输入密码之前,单击齿轮以切换到会话“Ubuntu on Xorg”。
留在 Wayland 并获得与您所拥有的效果相当接近的效果
xcape
:在 Gnome Tweaks 中,前往“键盘和鼠标”选项卡。在“其他布局选项”中,有一个选项可以制作CapsLock额外的Ctrl. 然后,您就失去了单独使用该密钥作为Esc.