Как перехватить ярлык Cmd + Tab в Java Swing на macOS? - PullRequest
0 голосов
/ 07 июня 2019

Вдохновленные успешными ответами на этот вопрос , у меня есть похожий вопрос, который не представляется решаемым с использованием того же подхода ...

Как перехватить Cmd + Tab на macOS в приложении Swing?

  • «Обычные» механизмы ярлыков не работают (как и обычный способ добавления элементов JComponent.getInputMap() / JComponent.getActionMap()).
  • Класс ApplicationListener в com.apple.eawt также не работает, потому что он имеет только обработчики для очень специфических задач и ярлыков, среди них Cmd + Q , но не Cmd + Tab .

Вариант использования: я работаю с приложением удаленного фрейм-буфера / удаленного рабочего стола, которому нужно перехватить как можно больше ярлыков, чтобы передать их на управляемый компьютер.

Мое приложение использует немодальное JFrame в качестве корневого Window, и оно является"полноэкранным" в соответствии со следующим:

Class.forName("com.apple.eawt.FullScreenUtilities").getMethod("setWindowCanFullScreen", Window.class, Boolean.TYPE).invoke(null, window, true);
Class app = Class.forName("com.apple.eawt.Application");
Object geta = app.getMethod("getApplication").invoke(null);
geta.getClass().getMethod("requestToggleFullScreen", Window.class).invoke(geta, window);

Хотя это не "полноэкранный режим". Пользователь по-прежнему может легко вывести свою мышь из полноэкранного окна удаленного кадрового буфера и управлять другими окнами (например, на другом мониторе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...