【发布时间】:2017-08-08 19:50:28
【问题描述】:
【问题讨论】:
-
所述快捷键在 vscode 中不起作用,解决这个问题毫无疑问......也许有人有修复。否则 F1 工作。
-
就我而言,Macro Recorder,一个外部程序,正在吃掉我的 CTRL + SHIFT + P。如果有人的键绑定在键绑定重新绑定窗口中被“吃掉”,这就像一个外部原因。跨度>
【问题讨论】:
嗯,似乎 f1 有效,而不是 control+shift+p。不知道为什么它把它列为键盘快捷键...
编辑:所以在我的一些计算机上 ctrl + shift + p 工作正常。不确定它是否与特定笔记本电脑上的映射冲突。
【讨论】:
很可能是因为您的操作系统键绑定与 VSCode 键绑定冲突。并且很可能您的操作系统键绑定(在我们的例子中为Ctrl+Shift)被绑定用于重要的事情(例如,更改布局),并且由于这个系统将焦点从应用程序转移到系统,并且应用程序不能接收keypress 事件。
任何应用都无法接收Ctrl-Shift-*事件,不仅仅是VSCode。
我使用的是 Ubuntu,我设置了 Ctrl+Shift 组合来更改布局。之后我打开开发者控制台 (Developer: Toggle Keyboard Shortcuts Troubleshooting) 并进行测试。这是日志:
[2020-09-13 11:28:35.706] [renderer1] [info] [KeybindingService]: / Received keydown event - modifiers: [ctrl], code: ControlLeft, keyCode: 17, key: Control
[2020-09-13 11:28:35.706] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [ctrl], code: ControlLeft, keyCode: 5 ('Ctrl')
[2020-09-13 11:28:35.706] [renderer1] [info] [KeybindingService]: \ Keyboard event cannot be dispatched.
这里发生了什么?该应用程序 (VSCode) 检测到Left Ctrl 按下。但是当我按下Left Shift 时,系统(Ubuntu)会处理Any Ctrl+Any Shift 组合以更改布局。因为系统(Ubuntu)处理了这个重要事件,所以它不会在应用程序(VSCode)中发送这个事件。因此,应用程序(VSCode)没有收到Left Shift按键事件,因为它被系统(Ubuntu)中断了。
如果您看到相同的内容,那么您知道问题的原因。
将系统Ctrl+Shift(默认情况下它侦听Any - 左或右)事件更改为Right Ctrl+Right Shift(或左)事件。在这种情况下,系统将只监听右键,并在应用程序中发送左键。您无需修改应用快捷方式(只要它们不完全使用左右键)。
注意Any(默认)、Left 和Right 的重要性:)
我使用Right Ctrl+Right Shift 进行系统布局更改,Left Ctrl+Left Shift+P 用于 VSCode 中的命令面板。
现在可以使用了:
[2020-09-13 11:57:47.607] [renderer1] [info] [KeybindingService]: / Received keydown event - modifiers: [ctrl], code: ControlLeft, keyCode: 17, key: Control
[2020-09-13 11:57:47.607] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [ctrl], code: ControlLeft, keyCode: 5 ('Ctrl')
[2020-09-13 11:57:47.607] [renderer1] [info] [KeybindingService]: \ Keyboard event cannot be dispatched.
[2020-09-13 11:57:47.715] [renderer1] [info] [KeybindingService]: / Received keydown event - modifiers: [ctrl,shift], code: ShiftLeft, keyCode: 16, key: Shift
[2020-09-13 11:57:47.715] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [ctrl,shift], code: ShiftLeft, keyCode: 4 ('Shift')
[2020-09-13 11:57:47.715] [renderer1] [info] [KeybindingService]: \ Keyboard event cannot be dispatched.
[2020-09-13 11:57:47.789] [renderer1] [info] [KeybindingService]: / Received keydown event - modifiers: [ctrl,shift], code: KeyP, keyCode: 80, key: P
[2020-09-13 11:57:47.790] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [ctrl,shift], code: KeyP, keyCode: 46 ('P')
[2020-09-13 11:57:47.790] [renderer1] [info] [KeybindingService]: | Resolving ctrl+shift+[KeyP]
[2020-09-13 11:57:47.790] [renderer1] [info] [KeybindingService]: \ From 3 keybinding entries, matched workbench.action.showCommands, when: no when condition, source: user.
我在两个系统中都有Ctrl+Shift 组合:Windows 和 Ubuntu。但是这个问题只发生在 Ubuntu 上。 Windows 可以正常工作。
【讨论】:
对我来说,它绑定到预装在我的联想笔记本电脑中的 Intel Graphics Command Center。
我缩小这个问题的最快方法是打开 Windows 任务管理器,一一杀死非重要服务,然后再次在 VS Code 中测试快捷方式。
【讨论】: