- 追加された行はこの色です。
- 削除された行はこの色です。
#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;}