#topicpath ---- //ここにコンテンツを記述します。 #contents Eclipse/RCPはplugin.xmlで宣言的にキーバインディング((ショートカットキーといえばよい?キーボード・アクセラレーターというヒトもいる))を設定することができます。Eclipseの ウィンドウ >> 設定 の 一般 >> キー に表示されるヤツですね。これでCtrl+Sで保存とか、いわゆるキーボードのショートカットを定義することができます。 #ref(key.png) **コマンドの定義 [#b82cda45] キーをバインドする仕組みについてですが、まず「コマンド」というモノを定義して、そのコマンドにキーをバインディングします。で、さらにそのコマンドに対してアクションを関連づければ、 あるキーを押す-> コマンドが決まる -> そのコマンドのアクションが実行される となります。 ***plugin.xml [#h7fb9324] <extension point="org.eclipse.ui.commands"> <category id="nu.mine.kino.plugin.samples.rcp.category" name="Sample"/> <command categoryId="nu.mine.kino.plugin.samples.rcp.category" <-categoryのid属性 id="nu.mine.kino.plugin.samples.rcp.command" name="サンプルコマンド"/> </extension> <extension point="org.eclipse.ui.bindings"> <key sequence="F10" <-F10を割当 commandId="nu.mine.kino.plugin.samples.rcp.command" <-commandのid属性 schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"> </key> ↑ デフォルトのスキーム ほかに org.eclipse.ui.emacsAcceleratorConfiguration がある </extension> さてこれで、コマンドとそのキーバインドが定義されました。 #ref(view.png) ~ ~ #ref(mod.png) **アクションの関連づけ [#ucd94450] 次にこのコマンドにアクションを関連づけますが、それはアクションの拡張ポイントにコマンドのIDを与えてやることで実現します。 <action class="nu.mine.kino.plugin.samples.rcp.actions.HogeAction" definitionId="nu.mine.kino.plugin.samples.rcp.command" <- commandのid id="nu.mine.kino.plugin.samples.rcp.actions.HogeAction" label="アクション。" menubarPath="topmenu/sepa01" style="push"/> 以上で、あるアクションに対してキーをバインドすることができました。 #ref(F10.png) **キーシーケンスの値について [#l3064cdd] キーのバインドで <key sequence="F10" <-F10を割当 としましたが、たとえば「Ctrl+S」の場合は <key sequence="Ctrl+S" とします。複数書く場合は <key sequence="Ctrl+X Ctrl+S" などとなります。 Ctrlなど特殊なキーは、プラットフォームに独立に設定するには M1 (WindowsはCtrl、MacはCommand) M2 (Shift) M3 (WindowsはAlt、MacはOption) M4 (MacはCtrl、その他は未定義) などがあるようです。詳細はEclipseヘルプを「M1 M2」で検索しましょう。 すでにあるヤツとバッティングしてるみたいでCtrl+Sとかはうまくいかないなあ。この辺の解決方法がまだわかんない。。。 プログラマティカルにアクションを追加した場合は、そのアクションクラス内で Action#setActionDefinitionId("org.eclipse.ui.file.save"); ***リンク [#gb815323] -Eclipseヘルプを「ワークベンチ・キー・バインディング」で検索しましょう。 -Eclipseヘルプを「M1 M2」で検索しましょう。 ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}