Как обнаружить ctrl-f в моем приложении SWT

Я написал пользовательский интерфейс 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, я получаю ожидаемую маску и нажатый символ.
10
задан Mwiza 11 November 2017 в 11:51
поделиться