使用 xmodmap 交换键并不适用于所有应用程序

使用 xmodmap 交换键并不适用于所有应用程序

我想交换我的控制和命令键,并且已经使用以下 xmodmap 配置完成了:

remove mod4 = Super_L
add control = Super_L
remove control = Control_L
add mod4 = Control_L

在大多数情况下,这种方法效果很好,但有些应用程序却没有察觉到这些变化。

例如,Chrome 在以下浏览器中仍将控制键报告为“Control”,将命令键报告为“Meta”https://keycode.info/,Firefox 也会执行相同的操作,只是它将命令键报告为“OS”。

类似地,Blender 仍然将所有快捷键绑定到 Ctrl+Z 等。

有没有办法强制所有应用程序交换两个键?我是否错误地配置了 xmodmap?

我正在使用带有 xmonad 桌面的 ubuntu,在这种情况下 gnome-tweaks 似乎无法正常工作。

答案1

我发现 keyd 是一个很好的解决方案。它在内核级别工作,所以很可能可以解决你的问题。

  1. 从 GitHub 克隆 keyd,构建它并启动守护进程。
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
  1. 找到需要交换的键的名称。sudo keyd monitor按下控制键和 OS 键时,运行可获得类似以下内容:
keyd virtual keyboard   0fac:0ade   leftcontrol down
keyd virtual keyboard   0fac:0ade   leftcontrol up
keyd virtual keyboard   0fac:0ade   leftmeta down

记下密钥名称

  1. 编辑文件/etc/keyd/default.conf以:
[ids]
*
[main]
leftcontrol=leftmeta 
  1. 最后,sudo keyd reload

相关内容