我想交换我的控制和命令键,并且已经使用以下 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 是一个很好的解决方案。它在内核级别工作,所以很可能可以解决你的问题。
- 从 GitHub 克隆 keyd,构建它并启动守护进程。
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
- 找到需要交换的键的名称。
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
记下密钥名称
- 编辑文件
/etc/keyd/default.conf
以:
[ids]
*
[main]
leftcontrol=leftmeta
- 最后,
sudo keyd reload