我已将W,A,S,D
指定为用于缩放/滚动键绑定扩展点的热键,这些是全局热键。这会导致我无法在文本框中键入WASD
的问题。我该怎么解决这个问题?我正在考虑禁用热键或在文本框OnFocus
事件处理程序中执行某些操作。
答案 0 :(得分:1)
如果你真的认为 W A S D 是良好的键绑定,如果你仍然认为他们为了获得良好的全局键绑定(我怀疑),您可以使用key binding contexts使绑定仅在外部编辑控件时可用。
一旦定义了org.eclipse.ui.contexts
扩展名,请将此上下文分配给考虑contextId
属性的相应键绑定。
现在,只有在指定的上下文处于活动状态时,这些键绑定才可用。 IContextService
可用于激活和停用上下文。
在输入Text
,Spinner
,StyledText
等编辑控件时,使用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
组合使用。使用普通箭头键。不值得修改每个文本框,因此您可以使用一组不明智的热键