ctrl
为了实现左键和键的低级交换capsLock
,我使用xkbcomp
如下:
首先获取当前的键盘布局:
xkbcomp $DISPLAY output.xkb
然后我将 2 行output.xkb
从
<LCTL> = 62;
...
<CAPS> = 66;
至
<CAPS> = 62;
...
<LCTL> = 66;
然后运行
xkbcomp output.xkb $DISPLAY
使其生效。它在大多数桌面应用程序中都能完美运行。但问题在于vscode
. 实际上它在正常模式下也可以正常工作vscode
,但是当我尝试更改快捷键vscode
并提示我按新键更改快捷键时,我按下capsLock
键盘上的键并vscode
认为我同时按下了ctrl
+ capsLock
。这不是我所期望的,vscode
不应该知道我的capsLock
键,它应该只知道我按下了ctrl
键,因为XServer
应该只告诉vscode
我按下了ctrl
键。我认为是因为我的配置不完整,所以vscode
仍然可以检测到我的capsLock
密钥。谁能告诉我如何完全交换ctrl
and capsLock
?xmodmap
不应该是解决方案,因为它基于xkbcomp
并且功能有限。
不幸的是,我在 VSCode 中的行为与您相同,但我正在使用以下解决方法,直至另行通知:
根据我的想法编辑文件output_mod.xkb 。
如果我在 vscode 中正常工作,我会使用
如果我编辑键盘快捷键,我以前使用过:
使用原始键进行更改,然后将布局设置回键交换:
好的,这不是很聪明,但对这个特定问题很有效。
/// 编辑 ///
经过一些研究,似乎有更好的解决方案,尤其是针对vscode 行为:
在终端:
插入代码:
如果此文件中已存在代码:
重启vscode。