Search code examples
visual-studioenvdte

Remove a keyboard shortcut binding in Visual Studio using Macros


I have a lot of custom keyboard shortcuts set up. To avoid having to set them up every time I install a new visual studio (happens quite a lot currectly, with VS2010 being in beta/RC) I have created a macro, that sets up all my custom commands, like this:

DTE.Commands.Item("ReSharper.ReSharper_UnitTest_RunSolution").Bindings = "Global::Ctrl+T, Ctrl+A"

My main problem is that Ctrl+T is set up to map to the transpose char command by default. So I want to remove that default value in my macro.

I have tried the following two lines, but both throw an exception

DTE.Commands.Item("Edit.CharTranspose").Bindings = ""
DTE.Commands.Item("Edit.CharTranspose").Bindings = Nothing

Although they kind of work, because they actually remove the binding ;) But I would prefer the solution that doesn't throw an exception.

How is that done?


Solution

  • I have coped with the same issue. I use a macro to assign key bindings for a set of align macros.

    Dim NewBindings() = {"Global::Alt+="}
    DTE.Commands.Item("Macros.Dev.AlignUtils.AlignEquals").Bindings = NewBindings
    NewBindings(0) = "Global::Alt+Num -"
    DTE.Commands.Item("Macros.Dev.AlignUtils.AlignMinus").Bindings = NewBindings
    ...
    

    And to remove key bindings i use the following statements :

    Dim DelBindings() = {} 
    DTE.Commands.Item("Macros.Dev.AlignUtils.AlignPlus").Bindings = DelBindings
    

    It works fine under Visual Studio 2005.