重现步骤:
M4
键。 按s
键(见图)在VSCode的早期版本(1.10.2 8076a19fdcab7e1fc1707952d652f0bb6c6db331)中,此方法工作正常。
对我来说也是一样。 发出关键字是因为我最初没有发现此问题:4层箭头键neo2德语键盘布局。
在1.10中正常工作,在1.11中无效。
VSCode中的快捷方式编辑器似乎将上面键盘中突出显示的组合标识为[IntlBackslash] i
在Windows和VSCode 1.11.0上没有损坏。
但是,键盘映射是由autohotkey完成的,它会拦截按键并发出自己的信号-AFAIK在Linux中的处理方式有所不同。
我只运行了git bisect
。 第一个错误提交似乎是https://github.com/Microsoft/vscode/commit/d10239639bf9beaa6ea34125319103de3dce43cd (@alexandrudima)
# bad: [9122ec4b1068bd391e41974f46a4b54c1b9c90f9] Fix styling of release notes (fixes #23948)
# good: [8076a19fdcab7e1fc1707952d652f0bb6c6db331] debug: save all untitled non dirty files before debug start
git bisect start '1.11.0' '1.10.2'
# good: [40fecfaa77f01672e8a147be71f6f7ccb9cf8a12] fix mixin
git bisect good 40fecfaa77f01672e8a147be71f6f7ccb9cf8a12
# good: [9d2e0611f7f7750f02ec72c4d18a20b69c5bf8cf] #18095 :lipstick:
git bisect good 9d2e0611f7f7750f02ec72c4d18a20b69c5bf8cf
# bad: [7c223972367b8ade5362d738606f3b910d0fbb42] Fixes #19235: Wording in tasks warning message
git bisect bad 7c223972367b8ade5362d738606f3b910d0fbb42
# good: [378231183e815c8e8e6a73ad04fc40ec5058fdc5] Promise cancellation is slow. Use a timer instead since this may run many times.
git bisect good 378231183e815c8e8e6a73ad04fc40ec5058fdc5
# good: [f70b0b3ecb7f276c811b0f18c7a0bec3b03c11a6] Fixes #22069: Define extension story for tasks
git bisect good f70b0b3ecb7f276c811b0f18c7a0bec3b03c11a6
# bad: [4ad4bd0d8011a5db5e2bea4543b7efb03d482aad] :bug: add commit box message
git bisect bad 4ad4bd0d8011a5db5e2bea4543b7efb03d482aad
# bad: [9003dbc3f5f2b87cb3cc4a3418030dbdc45ac0a3] Add IKeybindingService.resolveUserBinding
git bisect bad 9003dbc3f5f2b87cb3cc4a3418030dbdc45ac0a3
# bad: [968da131589845b43c0d00141b41b2bb366a84e8] Improve the ScanCode -> KeyCode guessing strategy
git bisect bad 968da131589845b43c0d00141b41b2bb366a84e8
# bad: [969cbdfea05beda1a38d4082698b87f239fc2384] Renames
git bisect bad 969cbdfea05beda1a38d4082698b87f239fc2384
# bad: [8a33db65efdd3ed4c76d01cb76c3ef658caf16db] Add Inspect Key Mapppings action
git bisect bad 8a33db65efdd3ed4c76d01cb76c3ef658caf16db
# bad: [0ebecd5ca915ed33ea747cafe2c99572c52904b5] Merge branch 'master' into alex/keybinding
git bisect bad 0ebecd5ca915ed33ea747cafe2c99572c52904b5
# bad: [d10239639bf9beaa6ea34125319103de3dce43cd] First cut at integrating keyboard mappers
git bisect bad d10239639bf9beaa6ea34125319103de3dce43cd
# first bad commit: [d10239639bf9beaa6ea34125319103de3dce43cd] First cut at integrating keyboard mappers
我需要一些时间来了解这种键盘布局。 如果您足够友好地帮助我,我将在未来几天对您进行检查。 这与我所见过的不同。
再次将VS Code切换为基于关键代码进行调度的解决方法。 添加以下设置:
"keyboard.dispatch": "keyCode"
并重新启动VS Code
我在Debian / Jessie上遇到了同样的问题。
https://github.com/Microsoft/vscode/issues/25797
我在退格键上遇到了问题。
嗨,我有同样的问题。 昨天,该解决方法对我有用,但是今天,它不再起作用。 编辑器启动后,它会工作约2秒钟,然后我的基本键(字母)不再起作用。 :思维:
我不确定自昨天以来我是否做过一些愚蠢的事情,但是不知道为什么会这样吗?
@zommerfelds我要检查的第一件事是settings.json
。 是"keyboard.dispatch"
在那里重复吗,是在打开文件夹时被工作空间设置覆盖的设置,等等。
接下来要看的是打开编辑器并运行F1 > Developer: Inspect key mappings
。 是否打印“ keyCode上的FallbackKeyboardMapper调度”(指示已应用设置)。
如果这不是设置的问题,即确认已在keyCode
上完成调度,那么我将尝试查看按特定键时Electron / Chromium / OS发送的方式:请将鼠标悬停在输入框上并截图:
您好@alexandrudima ,谢谢您的详细回答。
cat ~/.config/Code/User/settings.json
:
// Place your settings in this file to overwrite the default settings
{
"keyboard.dispatch": "keyCode"
}
如果我打开编辑器并转到_File => Preferences => Settings_,我会看到与_USER SETTINGS_相同的内容,对于{}
_
_F1>开发人员:检查键映射_给了我:
Layout info:
{
"model": "pc105",
"layout": "de,ch",
"variant": "neo,",
"options": "grp:menu_toggle",
"rules": "evdev"
}
FallbackKeyboardMapper dispatching on keyCode
Raw mapping:
...
对于键绑定,我得到:
如果我想输入“ a”:
如果我想输入“(”:
在该弹出窗口中打印一个就好了,但是在主编辑器中却没有。
在Neo中, A
是QWERTY中D
键的位置,而QUERTY中(
是CapsLock+J
。
我可以在Neo的第4层中使用箭头键,但不能使用数字。 退格键有效。 输入无效。 Ctrl+Z
适用于撤消(在Neo中)。
而且,正如我之前说的,在Vscode启动的最初几秒钟,一切正常,然后停止工作。
让我知道我是否可以通过其他方式提供帮助。 如果我可以再次开始使用Vscode,那就太棒了:)
编辑:为澄清起见,我认为我可能没有与OP相同的问题。 我在第4层中使用的箭头键有效,但不能使用普通字母键和简单字母键。
EDIT2:_Help => About_:
Version 1.12.2
Commit 19222cdc84ce72202478ba1cec5cb557b71163de
Date 2017-05-10T13:16:25.899Z
Shell 1.6.6
Renderer 56.0.2924.87
Node 7.4.0
谢谢@alexandrudima ! 更改"keyboard.dispatch": "code"
以"keyboard.dispatch": "keyCode"
的File->Preferences->Settings
帮我拿到M4层键(Esc键,导航键,退格键,删除数字)工作。
在1.19.0
上仍然对我不起作用。
我还注意到keyboard.dispatch
设置没有任何区别。 在这两种设置中,导航键和退格键均有效,但数字和普通字母无效。
有没有办法让我验证vscode实际将其加载为keyCode
并且不会以某种方式退回到code
?
其实我就可以了! NeoX扩展程序弄乱了我的设置。 禁用它可以解决此问题。 我不知道为什么要安装此扩展程序或其功能。 我仍然必须将keyboard.dispatch
为keyCode
才能工作。
对不起,谢谢您的支持。 是的,我现在可以使用vscode! :)
我想我们可以解决这个问题了吗?
当前的VS代码中仍然存在问题:
我在Ubuntu 17.10(Linux 4.13.0-36-generic)下使用带有VS Code 1.201的Neo-Layout也遇到了麻烦。 没有"keyboad.dispatch": keyCode
-开关,我可以使用Neo2进行键入,但是甚至不能使用CTRL + C和CTRL + V,因为它将映射回默认布局(分别触发CTRL + R和CTRL + W )。
好吧,我刚刚尝试了“ keyboard.dispatch”,它告诉我“未知的配置设置”。 但是我的问题还是有些不同。
箭头键可以正常工作,但是例如撤消键不起作用。 当我按M4+z
Visual Studio代码只能识别z
。 当我想将某些东西绑定到äöü之类的键上时,vscode会转换那些键(如果它是美国键盘的话)。 因此Ctrl+ü
被识别为Ctrl+z
。 这太可怕了。
我确实将我的键盘与XKB程序映射为使用改良的dvorak键盘。
我使用ralt_switch选项,该选项用于将右alt键切换为meta键或额外的修饰符。
我确实在VSCode Insider中启用keyCode设置。
以下是我的XKB安装示例
VS将RAlt (aka Meta key) + s
识别为End
键。 +好
但是当我应该用Ctrl+RAlt (Meta)+s
做ctrl+End
键时,它将被识别为Ctrl+s
,这将保存文档。 -坏
猜猜我尝试几次按Ctrl+Right
aka Ctrl+RAlt (Meta)+n
来跳过某些单词时会发生什么。
我想Ctrl修饰符不能与meta键或Mod4之类的额外修饰符(或keyCode-ed修饰符)一起使用。
甚至Ctrl+Shift+RAlt (Meta)+s
也可以节省。
但是Shift+Ralt (Meta)+s
确实像Shift+End
,即+Good
就组合修饰符而言,您能否使ctrl的行为像shift?
我认为这是相关问题,但情况不同。
_标题提及新布局,这是自定义_
这与已解决的评论有关吗?
通过使用keyboard.dispatch'code',但仅适用于OSX。 我只是试过它在Linux Mint / Ubuntu中不起作用
https://github.com/Microsoft/vscode/issues/12393#issuecomment -288994081
我在Linux上。
版本1.21.1
提交79b44aa704ce542d8ca4a3cc44cfca566e7720f1
基准2018-03-14T14:46:30.761Z
壳牌1.7.9
渲染器58.0.3029.110
节点7.9.0
建筑x64
不幸的是, keyboard.dispatch
解决方法似乎也不适用于我-至少不够好。 我可以使用重新定位的CapsLock
(Mod3)在编辑器中插入程序员符号,例如/,\,[,]
等,但不能在shift+/
类的快捷方式中插入, shift+capslock+s
物理按钮
尝试使用Mod3重新分配快捷方式显示unknown
好像提到了@sakasistem ,似乎按一定顺序的修饰键存在问题。
shift+/
类的快捷方式属于BS,因此不应该存在。
它应该是?
并让布局决定键入该字符所需的修饰符,或者布局独立于shift + scancode_slash
。 在第一个选项中,我只需键入? (无论我将其放在布局上的什么位置以及需要按哪些修饰符),在第二个布局中,我J
在布局中键入一个大写字母/
。
与krux02相似,我必须分别为撤消和重做键入“ Ctrl +ü”和“ Ctrl + k”,但是我能够找到合适的“ keyboard.dispatch”设置,这似乎已经解决了问题。
操作系统:Ubuntu 18.04 LTS
VSCode:
版本1.23.1
提交d0182c3417d225529c6d5ad24b7572815d0de9ac
日期2018-05-10T16:04:33.747Z
壳牌1.7.12
渲染器58.0.3029.110
节点7.9.0
建筑x64
哦,天哪,我正在使用vscode Insider,只是为了等待解决此问题。
就像@sakasistem
我将ThinkPad与物理Qwerty键盘一起使用,将我的键盘映射修改为Linux Mint Sonya上具有xkb文件的自定义dvorak
这是键盘映射文件https://pastebin.com/cUAxDtAM
确切地说,它是用于基于debian的操作系统,Linux Mint。
将其放在dvorak-intl定义之前的/usr/share/X11/xkb/symbols/us
partial alphanumeric_keys
xkb_symbols "dvorak-intl" {
它将导航魔术添加到dvorak布局中,它将表现up
, left
, down
, right
和RAlt+c,RAlt+h,RAlt+t,RAlt+n
(应该为i, j, k, l
在qwerty上使用c, h, t, n
),它实际上可在大多数应用程序中使用ctrl
, shift
和alt
修饰符,但使用vscode。 Ctrl+RAlt+n
应该跳下一个单词,但其行为类似于Ctrl + n并打开新选项卡。
Shift修饰符确实起作用,这使得Shift+RAlt+s
将选择到行尾,它只是Ctrl修饰符,该修饰符触发了第一位的快捷方式。
好吧,这是pastebin的内容:
partial alphanumeric_keys
xkb_symbols "dvorak-shy" {
name[Group1]= "English (Dvorak) by Shy";
key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft, dead_grave] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ bracketleft, braceleft ] };
key <AE12> { [ bracketright, braceright, dead_tilde] };
key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
key <AD02> { [ comma, less, dead_cedilla, dead_caron ] };
key <AD03> { [ period, greater, dead_abovedot, periodcentered ] };
key <AD04> { [ p, P ] };
key <AD05> { [ y, Y ] };
key <AD06> { [ f, F ] };
key <AD07> { [ g, G, Page_Up, Page_Up ] };
key <AD08> { [ c, C, Up, Up ] };
key <AD09> { [ r, R, dead_tilde, dead_tilde ] };
key <AD10> { [ l, L ] };
key <AD11> { [ slash, question ] };
key <AD12> { [ equal, plus ] };
key <AC01> { [ a, A ] };
key <AC02> { [ o, O ] };
key <AC03> { [ e, E ] };
key <AC04> { [ u, U ] };
key <AC05> { [ i, I ] };
key <AC06> { [ d, D, Home, Home ] };
key <AC07> { [ h, H, Left, Left ] };
key <AC08> { [ t, T, Down, Down ] };
key <AC09> { [ n, N, Right, Right ] };
key <AC10> { [ s, S, End, End ] };
key <AC11> { [ minus, underscore ] };
key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
key <AB02> { [ q, Q ] };
key <AB03> { [ j, J ] };
key <AB04> { [ k, K ] };
key <AB05> { [ x, X ] };
key <AB06> { [ b, B ] };
key <AB07> { [ m, M, Page_Down, Page_Down ] };
key <AB08> { [ w, W ] };
key <AB09> { [ v, V ] };
key <AB10> { [ z, Z ] };
key <BKSL> { [ backslash, bar ] };
key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
include "level3(ralt_switch)"
};
注意神奇的代码include "level3(ralt_switch)"
,使RAlt像mod3一样,但让vscode将其识别为unknown
。
这里的Linux,没有使用不寻常的键盘布局,我只通过XkbOptions
Caps Lock映射到Backspace,但这也不起作用。 切换到keyCode
使其起作用。 我猜这会影响任何类型的键映射。
对我来说,冒号:
自发地停止了在macOS 10.14.3上的Visual Studio Code 1.32.3中工作。 Neo2中的组合键是caps lock + ;
(在qwerty上)。 将keyboard.dispatch
为keyCode
有所帮助。
另一个neo2用户;)在使用VSCode的最初几分钟内偶然发现了Backspace-not-working问题。 幸运的是,到目前为止,解决方法仍然具有吸引力!
不过,如果有一天可以修复此错误,那就太好了;)
来自https://github.com/microsoft/vscode/issues/24043#issuecomment -292334048的变通办法适用于退格功能(:+1:),但向前/向后移动一个单词并删除光标前后的一个单词仍然不起作用:confused:,即Ctrl
+ Alt Gr
+ w
(在qwerty布局/键盘上的键中)应该删除光标左边的一个单词,而只是粘贴剪贴板,即Ctrl
+ w
(按qwerty布局/键盘上的键),即Ctrl
+ v
。
这似乎是Alt Gr
按下当按键被不理Ctrl
键。
我正在使用带有最新更新的Arch Linux。
如何提供更多信息以帮助解决此问题?
我是VS Code的新手,我在Linux( setxkbmap de koy
)上使用KOY布局(进行了一些改动)。 与Neo2相同的问题:我可以通过在编辑器中按CapsLock+L
来键入连字符。 但是包含CapsLock的快捷方式不起作用(例如使用Ctrl+-
= Ctrl-CapsLock-L
缩小)。
如果没有其他帮助,则“键绑定问题”页面建议运行F1 > Developer: Inspect key mappings
。
使用标准的德语布局( setxkbmap de
),我可以通过L键得到它:
"KeyL": {
"value": "l",
"withShift": "L",
"withAltGr": "ł",
"withShiftAltGr": "Ł"
}
使用KOY( setxkbmap de koy
),我得到:
"KeyL": {
"value": "n",
"withShift": "N",
"withAltGr": "n",
"withShiftAltGr": "N"
},
显然,VS Code无法获得更高级别的布局!
有关此键盘布局系列(neo,adnw,koy,bone)的一些其他技术信息:
在德语默认布局中, AltGr映射到ISO_Level3_Shift
(在Linux中)。 在Neo2(及类似版本)中, AltGr映射到ISO_Level5_Shift
而CapsLock映射到ISO_Level3_Shift
。
所以我认为,我们应该在> Developer: Inspect key mappings
的输出中看到
"KeyL": {
"value": "n",
"withShift": "N",
"withAltGr": "-",
(因为CapsLock成为了新的ISO_Level3_Shift
密钥,因此在Neo2中替换了AltGr)
要么
"KeyL": {
"value": "n",
"withShift": "N",
"withAltGr": "6",
(因为在按下OP的屏幕截图时,按下物理AltGr键和L键会得到“ 6”)。
我希望这可以帮助您VS Code开发人员更好地理解我们的问题。
我知道我(和其他人)在这里混合了一些有关Neo的问题。 但是它们可能是相关的。
在Ubuntu 18.04上使用此版本的VS Code / Codium进行了测试:
Version: 1.44.0
Commit: 2aae1f26c72891c399f860409176fe435a154b13
Date: 2020-04-09T10:44:46.342Z
Electron: 7.1.11
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Linux x64 4.15.0-96-generic
似乎在按下
Ctrl
键时,只是忽略了Alt Gr
Ctrl
键。我有同样的问题。 当我通过
AltGr + E
输入RightArrow
时,可以通过Shift + RightArrow
标记单个字母,但是将Ctrl + Shift + RightArrow
与Neo-layout配合使用,则分派Ctrl + Shift + E
。
我已经使用了按键录音功能,并使用了调度方法code
:
- 按下
Shift + AltGr + E
将首先显示shift + alt
,然后变成shift + right
。- 按
Ctrl + Shift + AltGr + E
首先显示ctrl + shift + alt
,然后变成ctrl + shift + e
并使用方法keyCode
:
Shift + AltGr + E
将首先显示shift + oem_8
,然后变成shift + right
。Ctrl + Shift + AltGr + E
显示ctrl + shift + oem_8 ctrl+shift+e
当只使用Ctrl + AltGr +E
而变成ctrl + e
而不是ctrl + right
时,也会发生同样的情况。
对于此特定问题,将某个密钥标记为已失效也许是可行的解决方法? 像Neo这样的布局根本不需要VSCode来监听AltGr
,它只应处理组合按下时分派的键控代码。 此外,当通过使用两个Mod4键“锁定”该层时,按Ctrl + Shift + e
被正确识别为ctrl + shift + right
。
我的布局信息:
"layout": {
"model": "pc105",
"layout": "de,de,gb",
"variant": "neo,,",
"options": "grp_led:scroll,altwin:alt_super_win",
"rules": "evdev"
}
我多次遇到这里所述的相同问题,其中按住control
或类似键会使neo布局的第4级中的某些键不可用,并执行不需要的快捷键。
在Ubuntu 18.04
为我工作并解决了所有这些问题的方法是,在启动和每次唤醒后运行setxkbmap -layout de -variant neo
。 似乎可以使用keyboard.dispatch
任何设置( keyCode
或code
)。
在"Startup Application Preferences"->Add
输入setxkbmap -layout de -variant neo
然后保存
随着sudoedit /lib/systemd/system-sleep/setxkbmap
添加
#!/bin/bash
case $1 in
post)
DISPLAY=:1 ; export DISPLAY
su $USER -c "sleep 1; setxkbmap -layout de -variant neo"
;;
esac
并使用sudo chmod 755 /lib/systemd/system-sleep/setxkbmap
赋予可执行权限。
$USER
添加您的用户。DISPLAY=:0
建议的echo $DISPLAY
( :1
)获得的值起作用。sleep 1;
,使用sleep 3;
)希望这对其他人有帮助!
最有用的评论
我需要一些时间来了解这种键盘布局。 如果您足够友好地帮助我,我将在未来几天对您进行检查。 这与我所见过的不同。
再次将VS Code切换为基于关键代码进行调度的解决方法。 添加以下设置:
"keyboard.dispatch": "keyCode"
并重新启动VS Code