Я написал SWT-интерфейс, который имеет основную функцию отображения текста в элементе управления StyledText. Я хочу добавить обработчик для Ctrl + F, чтобы при нажатии этой клавиши фокус был установлен в поле поиска. Я попытался использовать следующий код для обнаружения нажатия клавиши.
sWindow = new Shell();
...
sWindow.getDisplay().addFilter(SWT.KeyDown, new Listener()
{
@Override
public void handleEvent(Event e)
{
System.out.println("Filter-ctrl: " + SWT.CTRL);
System.out.println("Filter-mask: " + e.stateMask);
System.out.println("Filter-char: " + e.character);
}
});
Я ожидал, что когда я нажал Ctrl + F, я увижу следующий вывод:
Filter-ctrl: 262144
Filter-mask: 262144
Filter-char: f
Однако на практике я действительно вижу следующее.
Filter-ctrl: 262144
Filter-mask: 262144
Filter-char: <unprintable char - displayed as a box in eclipse console>
У меня есть два вопроса:
- Является ли Display.addFilter(...) лучшим способом добавления глобального ярлыка? Я попробовал Display.addListener(...), но это вообще не получало никаких событий.
- Почему я не получаю нажатый символ, когда я удерживаю Ctrl? Когда я удерживаю Alt или shift, я получаю ожидаемую маску и нажатый символ.