如何取消设置特定区域设置的键绑定

时间:2010-08-05 23:57:47

标签: eclipse-rcp locale

我有一个Eclipse插件,它使用了几个键绑定(Alt-G x,Alt-G y等等)。对于大多数键盘布局,这些特定的键绑定没有问题。然而,对于瑞士德国人来说,事实证明'Alt-G'创造了'@',这使得瑞士德国人很难使用我创造的插件。我不想更改当前的键绑定,因为这会混淆现有用户。

我的问题是:

如何以编程方式检测用户是否在瑞士德语键盘上并以编程方式禁用(或更改)这些键绑定?

(这是我可以在plugin.xml中指定的吗?)

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,您可以使用org.eclipse.ui.bindings扩展点来完全解决问题。

首先,您可以像往常一样设置键绑定,然后您可以在单个语言环境中取消设置该特定键绑定。仅对于该区域设置,您可以将绑定重新设置为不同的区域。

这很有效,但遗憾的是,如果你有很多键可以绑定,解绑和重新绑定,那就非常冗长。

以下是一个例子:

      <!-- set binding globally -->
      <key
        commandId="com.foo.myCommandId"
        contextId="org.eclipse.ui.contexts.window"
        schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
        sequence="M3+G T"/>
      <!-- un-set binding for Swiss German -->
      <key
        commandId="com.foo.myCommandId"
        contextId="org.eclipse.ui.contexts.window"
        locale="de_CH"
        schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
        sequence="M3+G C"/>
      <!-- re-set binding for Swiss German with a new key combo -->
      <key
        commandId="com.foo.myCommandId"
        contextId="org.eclipse.ui.contexts.window"
        locale="de_CH"
        schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
        sequence="M1+M3+G C"/>