代码之家  ›  专栏  ›  技术社区  ›  Matthias

检查在vs扩展中是否当前按下了控制/命令键

  •  10
  • Matthias  · 技术社区  · 6 年前

    在我的扩展中,如果当前按下了控制(或命令)键,我想签入某个函数。这怎么可能?我找不到任何公开此信息的字段。

    3 回复  |  直到 6 年前
        1
  •  1
  •   Tarun Lalwani    6 年前

    如果你读了下面的文章

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

    上面写着

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

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

    这意味着您的扩展代码根本不运行在编辑器窗口上下文中。你不能侵入WebView,因为扩展API没有提供它。因此,您需要与vscode团队一起打开一个特性请求,并要求他们公开最后一个键盘事件,或者至少公开 Shift , Ctrl alt 钥匙。目前他们只是丢弃它并扔掉(如果没有打开的编辑器),否则他们会在检查任何快捷方式组合之前将其发送给摩纳哥的编辑器。

    Throw event away

        2
  •  0
  •   HaaLeo alireza javanmardi    6 年前

    这不会直接回答您的问题,但可能有助于解决您的问题:
    您的扩展可以贡献两个不同的命令:例如第一个命令 myextension.runTarget ( noDebug=true ) myextension.debugTarget ( noDebug=false )此外,您的扩展还可以提供将这两个命令绑定到不同热键的键绑定,例如 CTRL + F5 而且只有 F5 .

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

        3
  •  0
  •   Dakota Maker    6 年前

    This question 可能有用。使用这种方法,您可以跟踪一个键关闭事件,然后如果键代码等于command(safari/chrome上的91或93,firefox上的224)或control。从那里,如果这个返回为真,或者您希望如何构造它,就可以放入您的功能中。