次の方法で共有


方法: 1 つのコマンドに複数のショートカット キーを割り当てる

1 つのコマンドに複数のショートカット キーを割り当てることができます。これは、たとえば、1 つのプロジェクトで作業を行う 2 人のユーザーが、同じコマンドの実行にそれぞれ異なるショートカットを使う場合に便利です。この割り当てを行うには、ショートカットを Object 型の配列内の文字列要素として渡します。

[!メモ]

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

1 つのコマンドに複数のショートカット キーを割り当てるには

  1. Visual Studio アドイン ウィザードを使用してアドインを作成します。プロジェクトに名前を付け、[OK] をクリックしてウィザードを開始します。

    Visual Studio アドイン ウィザードの使用方法の詳細については、「方法 : アドインを作成する」を参照してください。

  2. [プログラミング言語の選択] ページで、[Visual C# を使用してアドインを作成] を選択し、このトピックの Visual C# の例を実行するか、[Visual Basic を使用してアドインを作成] を選択し、Visual Basic の例を実行します。

  3. 関数の例を、Visual Studio アドイン ウィザードによって生成されたコードの Connect クラス内に貼り付けます。

  4. 既定のキーボード設定のコピーを作成するには、..\Program Files\Microsoft Visual Studio 10\Common7\IDE\ に移動します。いずれかの .vsk ファイルを右クリックし、[コピー] をクリックします。コピーしたファイルを同じフォルダーに貼り付けます。コピーしたファイルの名前は、"コピー ~ .vsk file name" になります。

  5. コピーしたファイルの名前を変更します。

  6. 新しい .vsk ファイルがキーボードの割り当てリストに表示されることを確認するには、Visual Studio で、[ツール] メニューの [オプション] をクリックします。

  7. [オプション] ダイアログ ボックスの左ペインで、[環境] フォルダーを展開し、[キーボード] を選択します。

    前の手順で名前を変更した .vsk ファイルの名前が [次の追加キーボード マップ スキームを適用] ボックスの一覧に表示されていることを確認します。

  8. アドインの例を実行する前に、キーボードの割り当てが [(既定)] に設定されていることを確認します。この設定を行うには、[オプション] ダイアログ ボックスの [キーボード] ペインで [リセット] をクリックします。

  9. アドインの例の prop.Value = "< Filename.vsk>" のステップで、<Filename.vsk> 部分を前の手順で指定した新しいキーボード スキーム名に置き換えます。

  10. 方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する」で説明されているように、OnConnection メソッドから関数を呼び出します。

  11. アドインをビルドして実行します。実行するには、[ツール] メニューの [アドイン マネージャー] をクリックし、作成したアドインを選択して、[OK] をクリックします。

    コマンドが 2 つの異なるショートカット キーに割り当てられます。Ctrl + Shift + Alt + Y キーまたは Ctrl + Shift + Alt + X キーを押すと、[新しいファイル] ダイアログ ボックスが表示されます。

使用例

次の例は、既存のショートカット キーを 2 つの新しいショートカット キーに置き換えます。

Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    BindSingle(_applicationObject)
End Sub
Sub BindSingle(ByVal dte As DTE2)
    ' Adds two new keybindings to a command.
    Dim cmds As Commands
    Dim cmd As Command
    Dim props As EnvDTE.Properties = DTE.Properties("Environment", _"Keyboard")
    Dim prop As EnvDTE.Property
    Dim bindings(1) As Object

    ' Make a writeable copy of the default keymapping scheme.
    prop = props.Item("SchemeName")
    prop.Value = "<FileName.vsk>"
    ' Assign the two shortcut key combinations, CTRL+SHIFT+ALT+Y and 
    ' CTRL+SHIFT+ALT+X, to the two bindings array elements. 
    bindings(0) = "Global:: CTRL+SHIFT+ALT+Y"
    bindings(1) = "Global:: CTRL+SHIFT+ALT+X"
    ' Set references to the Commands collection and the File.NewFile
    ' command.
    cmds = DTE.Commands
    cmd = cmds.Item("File.NewFile")
    ' Assign the contents of the bindings array to the Bindings 
    ' property.
    cmd.Bindings = bindings
End Sub
public void OnConnection(object application,
 ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    // Pass the applicationObject member variable to the code example.
    BindMultiple(_applicationObject ); 
}

public void BindMultiple( DTE2 dte ) 
{ 
    // Adds two new keybindings to a command.
    Commands cmds = null; 
    Command cmd = null; 
    EnvDTE.Properties props = dte.get_Properties( "Environment",
 "Keyboard"); 
    EnvDTE.Property prop = null; 
    Object[] bindings = new Object[ 2 ]; 

    // Make a writeable copy of the default keymapping scheme.
    prop = props.Item( "SchemeName" ); 
    prop.Value = "<FileName.vsk>"; 
    // Assign the two shortcut key combinations, CTRL+SHIFT+ALT+Y and 
    // CTRL+SHIFT+ALT+X, to the two bindings array elements. 
    bindings[ 0 ] = "Global:: CTRL+SHIFT+ALT+Y"; 
    bindings[ 1 ] = "Global:: CTRL+SHIFT+ALT+X"; 
    // Set references to the Commands collection and the File.NewFile
    // command.
    cmds = dte.Commands; 
    cmd = cmds.Item( "File.NewFile", -1 ); 
    // Assign the contents of the bindings array to the Bindings 
    // property.
    cmd.Bindings = bindings; 
} 

参照

処理手順

方法 : コマンドを単一のショートカット キーに割り当てる

方法: 既存のショートカット キーを保持する

概念

Bindings プロパティのパラメーター形式

その他の技術情報

アドイン コマンドのキーへの割り当て