Compartilhar via


Como preservar os atalhos de teclado existentes

Os suplementos do Visual Studio foram substituídos no Visual Studio 2013. Você deve atualizar seus suplementos para as extensões VSPackage. Para obter mais informações sobre atualização, consulte Perguntas frequentes: convertendo suplementos em extensões VSPackage.

Normalmente, quando você altera o atalho de teclado para um comando, o atalho existente é perdido. O exemplo a seguir demonstra como associar dois novos atalhos a um comando e ainda preservar os atalhos existentes.

Se você desejar ver uma lista de comandos juntamente com os atalhos atuais, execute o exemplo de ListKeyBindings conforme apresentado em Como exibir associações de teclas existentes.

Dica

As caixas de diálogo e os comandos de menu que você vê podem diferir das descritas no Help dependendo de suas configurações ativas ou de edição.Esses procedimentos foram desenvolvidos com as Configurações Gerais de Desenvolvimento ativas.Para alterar as configurações, clique em Importar e ExportarConfigurações no menu de Ferramentas.Para obter mais informações, consulte Personalizando configurações de desenvolvimento no Visual Studio.

Para adicionar novos atalhos de teclado e preservar os existentes

  1. Use o Assistente do suplemento do Visual Studio para criar um suplemento. Nomeie o projeto e clique em OK para iniciar o assistente.

    Para obter mais informações sobre como usar o Assistente de suplemento do Visual Studio, consulte Como criar um suplemento.

  2. Na página Selecione uma Linguagem de Programação, selecione Criar um Suplemento usando o Visual C# para executar o exemplo do Visual C# abaixo ou Criar um Suplemento Usando o Visual Basic para executar o exemplo do Visual Basic.

  3. Cole a função de exemplo (mostrada posteriormente neste tópico) na classe Connect do código gerado pelo Assistente de Suplemento do Visual Studio.

  4. Para criar uma cópia das configurações de teclado padrão, localize C:\Arquivos de Programas\Microsoft Visual Studio 10\Common7\IDE\.

  5. Clique com o botão direito do mouse em um dos arquivos .vsk e clique em Copiar.

  6. Cole a cópia na mesma pasta, renomeie-a e em seguida.

  7. Para verificar se o novo arquivo .vsk aparece na lista de atalhos do teclado, no Visual Studio, clique em Opções no menu Ferramentas.

  8. No painel esquerdo da caixa de diálogo Opções, expanda a pasta Ambiente e selecione Teclado.

    Certifique-se de que o nome do arquivo .vsk que você especificou anteriormente apareça na lista de Aplicar o seguinte esquema adicional de mapeamento de teclado.

  9. Antes de executar o exemplo de suplemento, verifique se os atalhos do teclado estão definidos como (Padrão). Você pode fazer isso clicando em Redefinir no painel Teclado da caixa de diálogo Opções.

  10. Na etapa de prop.Value = "<Filename.vsk>" de exemplo do suplemento, substitua <Filename.vsk> usando o nome do arquivo .vsk que você especificou anteriormente.

  11. Chame a função do método de OnConnection, como descrito em Como compilar e executar os exemplos de código do modelo de objeto Automation.

  12. Compile o suplemento.

  13. Para executar o suplemento, clique em Gerenciador de Suplemento no menu Ferramentas, selecione o suplemento que criou e clique em OK.

    O comando File.NewFile é associado aos novos atalhos do teclado, CTRL+ALT+SHIFT+Y e CTRL+ALT+SHIFT+U, e também aos atalhos originais.

Exemplo

O exemplo a seguir do suplemento demonstra como associar dois novos atalhos de teclado a um comando e também preserva seus os existentes.

Sub PreserveBindings()
    ' Adds two new key bindings while preserving the existing ones.
    Dim cmds As Commands
    Dim cmd As Command
    Dim props As EnvDTE.Properties = DTE.Properties("Environment", _
    "Keyboard")
    Dim prop As EnvDTE.Property
    Dim bindings() As Object
    Dim bindingNumber As Integer

    ' Set references to the Commands collection and the File.NewFile
    ' command.
    cmds = DTE.Commands
    cmd = cmds.Item("File.NewFile")
    ' Make a writeable copy of the default keymapping scheme.
    prop = props.Item("SchemeName")
    prop.Value = "<FileName.vsk>"
    ' Retrieve the current bindings for the command.
    bindings = cmd.Bindings
    ' Get the number of bindings for the command.
    bindingNumber = bindings.Length
    ' Add two more elements to the array to accomodate two
    ' new commands.
    ReDim Preserve bindings(bindingNumber + 1)
    ' Add the new bindings to the existing ones in the array.
    bindings(bindingNumber) = "Global::CTRL+ALT+SHIFT+Y"
    bindings(bindingNumber + 1) = "Global::CTRL+ALT+SHIFT+U"
    ' Assign the contents of the bindings array to the Bindings 
    ' property.
    cmd.Bindings = bindings
End Sub
public void OnConnection(object application,
 Extensibility.ext_ConnectMode connectMode, object addInInst, ref
 System.Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    // Pass the applicationObject member variable to the code example.
    PreserveBindings((_applicationObject); 
}

// Add-in example for TextSelection.FindPattern.
// Also shows usage of these methods and properties:
//    TextSelection.SelectLine
public void PreserveBindings( DTE dte ) 
{ 
    // Adds two new key bindings while preserving the existing ones.
    Commands cmds = null; 
    Command cmd = null; 
    EnvDTE.Properties props = dte.get_Properties( "Environment",
 "Keyboard"); 
    EnvDTE.Property prop = null; 
    Object[] bindings = null; 
    int bindingNumber = 0; 

    //  Set references to the Commands collection and the File.NewFile
    //  command.
    cmds = dte.Commands; 
    cmd = cmds.Item( "File.NewFile", -1 ); 
    // Make a writeable copy of the default keymapping scheme.
    prop = props.Item( "SchemeName" ); 
    prop.Value = "<FileName.vsk>"; 
    // Retrieve the current bindings for the command.
    bindings = ( ( System.Object[] )( cmd.Bindings ) ); 
    // Get the number of bindings for the command.
    bindingNumber = bindings.Length; 
    // Add two more elements to the array to accomodate two
    // new commands.
    // Create temp variable for copying values. 
    // Arrays are zero-based in C#.
    object[] temp = new object[ bindingNumber + 2 ]; 
    System.Array.Copy( bindings, temp, Math.Min( bindings.Length,
 temp.Length ) ); 
    bindings = temp; 
    // Add the new bindings to the existing ones in the array.
    bindings[ bindingNumber ] = "Global::CTRL+ALT+SHIFT+Y"; 
    bindings[ bindingNumber+1 ] = "Global::CTRL+ALT+SHIFT+U"; 
    // Assign the contents of the bindings array to the Bindings 
    // property.
    cmd.Bindings = bindings; 
}

Consulte também

Tarefas

Como associar um comando a uma única tecla de atalho

Como associar um comando a vários atalhos de teclado

Conceitos

Formato dos parâmetros da propriedade Bindings

Outros recursos

Associando comandos de suplementos a teclas