我有一个Eclipse插件,它使用了几个键绑定(Alt-G x,Alt-G y等等)。对于大多数键盘布局,这些特定的键绑定没有问题。然而,对于瑞士德国人来说,事实证明'Alt-G'创造了'@',这使得瑞士德国人很难使用我创造的插件。我不想更改当前的键绑定,因为这会混淆现有用户。
我的问题是:
如何以编程方式检测用户是否在瑞士德语键盘上并以编程方式禁用(或更改)这些键绑定?
(这是我可以在plugin.xml中指定的吗?)
答案 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"/>