检查VS Extensions中当前是否按下了控制/命令键

时间:2018-05-20 16:00:46

标签: visual-studio-code vscode-extensions

在我的扩展程序中,如果当前按下了控制(或命令)键,我想检查某个功能。怎么可能?我无法找到任何公开此信息的字段。

3 个答案:

答案 0 :(得分:1)

如果您阅读以下文章

https://code.visualstudio.com/docs/extensionAPI/patterns-and-principles

它说

  

Visual Studio Code具有非常丰富的可扩展性模型,并且有许多方法可以扩展该工具。但是,我们不提供对扩展编写器的底层UI DOM的直接访问。借助VS Code,我们不断尝试优化底层Web技术的使用,以提供始终可用,响应速度快的编辑器,随着这些技术和产品的发展,我们将继续调整DOM的使用。为了保持性能和兼容性,我们在自己的主机进程中运行扩展,并阻止对DOM的直接访问。 VS Code还包括用于IntelliSense等常见场景的内置UI组件集,因此这些体验在编程语言和扩展中是一致的,扩展开发人员无需自己构建。

     

我们意识到这种方法最初可能会对扩展开发人员产生限制。我们一直在寻找改进可扩展性模型的方法,并扩展可用于扩展的功能。我们期待听到您的反馈和想法。

这意味着您的扩展代码根本不会在编辑器窗口上下文中运行。而且你不能侵入webview,因为扩展api没有提供它。因此,您需要向VScode团队打开功能请求,并要求他们公开最后一个键盘事件或至少公开ShiftCtrlalt键的状态。目前他们只是将其丢弃并丢弃(如果没有编辑器打开),否则他们会在检查任何快捷方式组合之前将其发送给摩纳哥编辑器

Throw event away

答案 1 :(得分:0)

This question可能有用。使用这种方法,您可以跟踪按键事件,然后如果密钥代码等于命令(Safari / Chrome上为91或93,Firefox上为224)或控制。从那里,你可以输入你的功能,如果它返回true,或者你想要构建它

答案 2 :(得分:0)

这并不直接回答您的问题,但可能有助于解决您的问题:
您的扩展程序可以提供两个不同的命令:例如,第一个命令myextension.runTargetnoDebug=true)和myextension.debugTargetnoDebug=false)。此外,您的扩展可以提供将这两个命令绑定到不同热键的键绑定,例如 CTRL + F5 ,仅 F5

看起来vscode本身也是这样做的(键绑定视图的屏幕截图): Keybinding screenshot