使用 xkbcomp 的键盘映射中出现令人费解的现象

使用 xkbcomp 的键盘映射中出现令人费解的现象

ctrl为了实现左键和capsLock右键的低级交换,我使用了xkbcomp如下方法:

首先获取当前的键盘布局:

 xkbcomp $DISPLAY output.xkb

然后我把下面的两行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键。谁能告诉我如何完全交换ctrlcapsLockxmodmap不应该是解决方案,因为它基于xkbcomp和且功能有限。

答案1

不幸的是,我在 VSCode 中的行为与您相同,但在另行通知之前,我正在使用以下解决方法:

xkbcomp $DISPLAY output_orig.xkb
xkbcomp $DISPLAY output_mod.xkb

编辑文件输出_mod.xkb按照我的想法。

如果我通常在 vscode 中工作,我会使用

xkbcomp output_mod.xkb $DISPLAY

如果我编辑键盘快捷键,我之前会使用:

xkbcomp output_orig.xkb $DISPLAY

使用原始键进行更改,然后将布局设置回键交换:

xkbcomp output_mod.xkb $DISPLAY

好吧,这不是很聪明,但对于这个特定问题来说很有效。

/// 编辑 ///

经过一些研究,似乎有一个更好的解决方案,特别是对于vscode 行为

在终端:

nano ~/.config/Code/User/settings.json

插入代码:

{
    "keyboard.dispatch": "keyCode"
}

如果此文件中已存在代码:

{
    "bla": "blub",
    "keyboard.dispatch": "keyCode"
}

重新启动 vscode。

相关内容