display.addFilter(SWT.KeyDown,listener)不处理事件,如果它是预定义的热键

时间:2014-07-15 11:46:45

标签: java eclipse-plugin swt keyevent

处理按键时遇到问题。我的插件必须记录用户的每个键盘操作。所以,我创建了处理程序获胜方法:

private Display display;

public ActionsRecorder() {
    display = Display.getCurrent();
    if (display == null) {
        display = Display.getDefault();
    }
}

public void handleKeyPress() throws ExecutionException {
    display.addFilter(SWT.KeyDown, this);
}

@Override
public void handleEvent(Event event) {  
    System.out.println(event.keyCode);
}

因此,如果我按 Ctrl + B ,两个印刷机都会正确处理。但是,如果按热键例如 Ctrl + A ,则只处理 Ctrl 按钮。 我认为另一个默认处理程序捕获事件并将event.doit值分配给false

如何解决?是否有其他方法可以创建全局(在ide窗口中)记录器?

UPD :Baz,谢谢你的帮助。但我的问题是eclipse(luna)不会调用.handleEvent(e)方法,如果按下热键。 在插件生命周期中添加侦听器的位置?

0 个答案:

没有答案