【问题标题】:How to un-set a keybinding for a particular locale如何取消设置特定语言环境的键绑定
【发布时间】:2011-03-26 02:33:00
【问题描述】:

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

我的问题是:

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

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

【问题讨论】:

  • 在我问这个问题之前,我应该看/稍微/更努力一下。似乎 org.eclipse.ui.bindings 扩展点确实提供了“语言环境”属性。使用它,我可以指定键绑定应仅应用于特定的语言环境,但我仍然不知道如何将键绑定应用于除一个以外的 所有 语言环境。

标签: eclipse-rcp locale


【解决方案1】:

要回答我自己的问题,您可以使用 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"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 2012-07-18
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多