Compartilhar via


How to: Preservar os atalhos de Teclado existentes

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

Se você quiser ver uma lista de comandos junto com seus atalhos atuais, executar o exemplo de ListKeyBindings apresentadas na How to: Exibir ligações de chave existente.

ObservaçãoObservação

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição. Esses procedimentos foram desenvolvidos com o General Development Settings ativo. Para alterar as configurações, clique em importação e exportação configurações sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações.

Para adicionar novos atalhos de teclado e preservar os existentes

  1. Use o Visual Studio Add-In Wizard para criar um suplemento. Nome do projeto e clique em OK para iniciar o assistente.

    Para obter mais informações sobre como usar o Visual Studio Add-In Wizard, consulte How to: Criar um Adicionar-.

  2. No Select a Programming Language de página, selecione uma Create an Add-in usando Visual C# para executar o Visual C# exemplo abaixo, ou criar um suplemento usando Visual Basic para executar o Visual Basic exemplo.

  3. Colar a função de exemplo (mostrada posteriormente neste tópico) na classe do código que é gerado por conectar-se a Visual Studio Add-In Wizard.

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

  5. Clique com o botão direito dos arquivos .vsk e clique em Copy.

  6. Colar a cópia na mesma pasta e renomeie-o.

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

  8. No painel esquerdo do Opções caixa de diálogo caixa, expanda o ambiente pasta e selecione teclado.

    Certifique-se de que o nome do arquivo .vsk especificados anteriormente consta o Aplicar o esquema de mapeamento de teclado adicionais seguintes lista.

  9. Antes de executar o suplemento de exemplo, certifique-se de que os atalhos de teclado são definidos como (padrão). Você pode fazer isso clicando em Redefinir na teclado o painel da Opções caixa de diálogo.

  10. No prop.Value = "<Filename.vsk>" etapa do exemplo add-in, substitua <Filename.vsk> usando o nome do arquivo .vsk especificados anteriormente.

  11. Chamar a função a partir de OnConnection método, conforme descrito em How to: Compilar e executar os exemplos de código de modelo de objeto de automação.

  12. Crie o suplemento.

  13. Para executar o suplemento, clique Gerenciador de suplementos sobre o Ferramentas menu, selecione o add-in que você criou e clique em OK.

    O File.NewFile comando está acoplado para novos atalhos de teclado, CTRL + ALT + SHIFT + Y e CTRL + ALT + SHIFT + U e também os atalhos originais.

Exemplo

O exemplo a seguir suplemento demonstra como vincular os dois novos atalhos de teclado para um comando e também preservar suas 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

How to: Vincular a um comando a uma única tecla de atalho

How to: Vincular a um comando para vários atalhos de Teclado

Conceitos

Ligações de parâmetro da propriedade Formatar

Outros recursos

Ligação Adicionar-nos comandos Chaves