VS 2013 SDK: How to keybind hotkey only for Code Window Editor?

前端 未结 2 1790
说谎
说谎 2021-01-21 08:41

In C# or else VB.Net, using a Visual Studio Package, I would like to assign a custom keyboard shortcut to a CommandBarBu

相关标签:
2条回答
  • 2021-01-21 09:45

    In Visual Studio, keyboard shortcuts are associated to commands, not directly to CommandBarButtons. Technically they are called Keyboard Bindings and are declared in the .vsct file where you declare commands. See KeyBindings element

    Edited: You have to use:

      <KeyBinding guid="guidVSMyPackageCmdSet" id="cmdidMyCommand" editor="guidSourceCodeTextEditor" mod1="Control" key1="X" mod2="Control" key2="X"/>
    

      <GuidSymbol name ="guidVisualBasicEditor" value="{2c015c70-c72c-11d0-88c3-00a0c9110049}" />
    
      <GuidSymbol name ="guidSourceCodeTextWithEncodingEditor" value="{c7747503-0e24-4fbe-be4b-94180c3947d7}" />
    
      <GuidSymbol name ="guidSourceCodeTextEditor" value="{8b382828-6202-11d1-8870-0000f87579d2}" />
    

    ...

    where guidSourceCodeTextEditor can be any name that you define in the <Symbols> section whose value you must get from HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0Exp_Config\Editors. Once you run the package, if you go to Tools >Options window, Environment > Keyboard section, type the name of your command in Show Commands Containing, and you should see the shortcut in the list with the editor between parenthesis, as if you have selected it from the "Use new shortcut in" list. Which yields us to the question if the guids are the same for each Visual Studio version. AFAIK, this is not guaranteed (nothing prevents Microsoft changing guids in a new version) but likely they are the same. I cannot verify right now because the computer that I am using only has VS 2013.

    0 讨论(0)
  • 2021-01-21 09:47

    I was unable to find the relevant information for Visual Studio 2019 "C# Editor". But it relatively easy, though, not intuitive. To get the guids for the standard editors you can:

    1. Go to Tools > Options > Environment > Keyboard
    2. Select any command in the list
    3. Open Use new shortcut in dropdown, select required editor
    4. Assign any shortcut to it
    5. Save the options
    6. Go to Tools > Import and Export Settings... > Export
    7. Unselect ALL and then choose Environment > Keyboard
    8. Press Export and choose where to save it as .vssettings file
    9. Open the .vssettings file with any text editor
    10. Search for UserShortcuts. You'll find your modified command there
    11. In the Shortcut node, you'll find your scope (in my case Scope="C# Editor")
    12. Search for that scope value (e.g. C# Editor)

    You'll find a Scope XML node. In my case it is:

    <Scope Name="C# Editor" ID="{A6C744A8-0E4A-4FC6-886A-064283054674}"/>
    

    Copy the id including curly braces, and set it to the value of <GuidSymbol ... /> as described in another answer in this topic. In my case it is:

     <GuidSymbol name="guidCSharpEditor" value="{A6C744A8-0E4A-4FC6-886A-064283054674}" />
    
    0 讨论(0)
提交回复
热议问题