简短问题: 有没有办法强制 VSCode 遵循 xkb 定义的键映射?对于右移和向上箭头,它似乎有自己的键映射,这破坏了我的触摸打字。
前提: 我的联想 Flex 4 Ideapad 键盘有不寻常的布局。它的 UP 键(UpArrow/PgUp)通常位于 RTSH 键(右 Shift)的位置,而 RTSH 键位于 UP 箭头键的右侧。这导致命令和文本文档中出现许多代价高昂的错误:盲打变得很危险。笔记本电脑运行的是 Ubuntu 20.4
我将键映射换回了合理的位置,首先通过编辑/usr/share/X11/xkb/symbols/pc
,然后制作。
key <RTSH> { [ Up ] };
key <UP> { [ Shift_R ] };
这对于我的所有目的来说都很好。所有应用程序都接受 UP 键现在具有 Shift 功能,并且 RTSH 用作Up
,无论如何我很少使用光标。多年来没有问题。
问题: 我开始在工作中使用 VSCode,并且我很喜欢它。
但是在我的 Ideapad 中,VSCode 始终将我按下的 UpArrow 键解释为 而Shift+Up
不是 Shift,后者是 的快捷键"command": "cursorUpSelect"
。即使在 VSCode 的 Vim 模式下也会发生这种情况。我只想让 VSCode 遵循我的键盘映射并将此命令分配给 Shift+Up。
我已经尝试过的解决方案:
我尝试通过编辑 来关闭此快捷键keybindings.json
。但我能做的最好的就是为这个命令创建另一个快捷键,UP 键仍然不能充当 Shift 修饰键。禁用或重新分配快捷键将使光标保持静止,但只有当我按下修饰键两次(UP+A+A 而不是 UP+A)时,Shift 修饰键才会起作用。这仍然妨碍了盲打。
我尝试进一步编辑/usr/share/X11/xkb/symbols/pc
,编辑
modifier_map Shift { Shift_L, Shift_R};
进入
modifier_map Shift { Shift_L, Up};
但这会导致右移修饰符失效。因此我将 xkb/symbols/pc 改回其原始“出厂”状态,然后/usr/share/X11/xkb/keycodes/evdev
改为编辑。其他一切都按我在每个应用程序中的预期工作,只有 VSCode 仍然会选择文本并且每次我通过按下 UP 键调用 Shift 修饰符时都会将光标向上移动。
答案1
在 vscode 设置 -> 应用程序 -> 键盘
在“键盘:Dispatch”中选择“KeyCode”
这对我有用