Eclipse RCP应用程序密钥绑定与文本框中的键入冲突

时间:2015-10-02 06:59:09

标签: java eclipse-rcp

我已将W,A,S,D指定为用于缩放/滚动键绑定扩展点的热键,这些是全局热键。这会导致我无法在文本框中键入WASD的问题。我该怎么解决这个问题?我正在考虑禁用热键或在文本框OnFocus事件处理程序中执行某些操作。

2 个答案:

答案 0 :(得分:1)

如果你真的认为 W A S D 是良好的键绑定,如果你仍然认为他们为了获得良好的全局键绑定(我怀疑),您可以使用key binding contexts使绑定仅在外部编辑控件时可用。

一旦定义了org.eclipse.ui.contexts扩展名,请将此上下文分配给考虑contextId属性的相应键绑定。

现在,只有在指定的上下文处于活动状态时,这些键绑定才可用。 IContextService可用于激活和停用上下文。

在输入TextSpinnerStyledText等编辑控件时,使用display filter停用上下文,并在离开此类控件时激活它。

例如:

Listener filter = new Listener() {
  IContextActivation activation;
  @Override
  public void handleEvent( Event event ) {
    if( isEditingWidget( event.widget ) ) {
      if( event.type = SWT.FocusIn ) {
        contextService.deactivateContext( activation );
      } else {
        activation = contextService.activateContext( "context id" );
      }
    }
  }
};
display.addFilter( SWT.FocusIn, filter );
display.addFilter( SWT.FocusOut, filter );

答案 1 :(得分:0)

您必须更改热键。 WASD已经映射为单个单击,并与shift组合使用。使用普通箭头键。不值得修改每个文本框,因此您可以使用一组不明智的热键