Compartir a través de


Cómo: Conservar los métodos abreviados de teclado existentes

Los complementos de Visual Studio están desusados en Visual Studio 2013. Debe actualizar los complementos a las extensiones de VSPackage. Para obtener más información sobre la actualización, vea Preguntas más frecuentes: Convertir complementos en extensiones de VSPackage.

Normalmente, al cambiar el método abreviado de teclado para un comando, se pierde el existente. En el ejemplo siguiente se muestra cómo enlazar dos nuevos métodos abreviados a un comando sin dejar de conservar los existentes.

Si desea ver una lista de los comandos con sus métodos abreviados actuales, ejecute el ejemplo ListKeyBindings tal como se indica en Cómo: Ver los enlaces de teclado existentes.

NotaNota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos.Estos procedimientos se han desarrollado con la Configuración de desarrollo general activa.Para cambiar la configuración, haga clic en Importar y exportarconfiguraciones en el menú Herramientas.Para obtener más información, vea Personalizar la configuración de desarrollo en Visual Studio.

Para agregar nuevos métodos abreviados de teclado y conservar los existentes

  1. Use el Asistente para complementos de Visual Studio para crear un complemento. Asigne un nombre al proyecto y haga clic en Aceptar para iniciar el asistente.

    Para obtener más información sobre el uso del Asistente para complementos de Visual Studio, vea Cómo: Crear un complemento.

  2. En la página Seleccione un lenguaje de programación, seleccione Crear complemento utilizando Visual C# para ejecutar el ejemplo de Visual C#, que aparece a continuación, o Crear un complemento utilizando Visual Basic para ejecutar el ejemplo de Visual Basic.

  3. Pegue la función de ejemplo (incluida antes en este tema) en la clase Connect del código generado por el Asistente para complementos de Visual Studio.

  4. Para crear una copia de la configuración predeterminada del teclado, busque C:\Archivos de programa\Microsoft Visual Studio 10\Common7\IDE\.

  5. Haga clic con el botón secundario en uno de los archivos .vsk y, a continuación, haga clic en Copiar.

  6. Pegue la copia en la misma carpeta y, a continuación, cámbiele el nombre.

  7. Para comprobar que el nuevo archivo .vsk aparece en la lista de métodos abreviados de teclado, en Visual Studio, haga clic en el comando Opciones del menú Herramientas.

  8. En el panel izquierdo del cuadro de diálogo Opciones, expanda la carpeta Entorno y seleccione Teclado.

    Asegúrese de que el nombre del archivo .vsk que especificó antes aparece en la lista Aplicar la siguiente combinación de asignación de teclado adicional.

  9. Antes de ejecutar el ejemplo de complemento, asegúrese de que los métodos abreviados de teclado se establezcan en (Predeterminado). Para ello, haga clic en Restablecer en el panel Teclado del cuadro de diálogo Opciones.

  10. En el paso prop.Value = "<Filename.vsk>" del ejemplo de complemento, reemplace <Filename.vsk> con el nombre del archivo .vsk que especificó antes.

  11. Llame a la función desde el método OnConnection, como se describe en Cómo: Compilar y ejecutar los ejemplos de código del modelo de objetos de automatización.

  12. Compile el complemento.

  13. Para ejecutar el complemento, haga clic en Administrador de complementos en el menú Herramientas, seleccione el complemento creado y haga clic en Aceptar.

    El comando File.NewFile se enlaza a los nuevos métodos abreviados de teclado, CTRL+ALT+MAYÚS+Y y CTRL+ALT+MAYÚS+U, así como a los métodos abreviados originales.

Ejemplo

En el ejemplo de complemento siguiente se muestra cómo enlazar dos nuevos métodos abreviados de teclado a un comando conservando también los 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; 
}

Vea también

Tareas

Cómo: Enlazar un comando a una única tecla de método abreviado

Cómo: Enlazar un comando a varios métodos abreviados de teclado

Conceptos

Formato de los parámetros de la propiedad Bindings

Otros recursos

Enlazar comandos de complementos a teclas