У меня есть приложение с графическим интерфейсом для киоска, над которым я работаю, и оно требует от меня запретить пользователям возможность Alt-Tab из полноэкранного окна.Некоторое время назад я опубликовал вопрос об этом, и один из участников помог мне с кодом, который отлично работал в среде Windows.
Вот он:
public class TabStopper implements Runnable {
private boolean isWorking = false;
private MenuFrame parent;
public TabStopper(MenuFrame parent) {
this.parent = parent;
new Thread(this, "TabStopper").start();
}
public void run() {
this.isWorking = true;
Robot robot;
try {
robot = new Robot();
while (isWorking) {
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_TAB);
parent.requestFocus();
Thread.sleep(10);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void stop() {
this.isWorking = false;
}
public boolean isWorking() {
return this.isWorking;
}
}
Однако мне нужно эточтобы иметь возможность работать и в Linux.Я сделал исполняемый jar из исходного кода и перенес его в Linux.Все работало, кроме клавиш Alt и Tab, которые постоянно нажимались.Кнопки на моем графическом интерфейсе постоянно менялись, и я смог открыть терминал (я установил бэкдор в приложении во время тестирования на случай, если что-то подобное), который не позволил бы мне что-либо печатать, потому что Tab перечисляет все файлытекущий каталог.
Может кто-нибудь сказать мне, будет ли исправление, которое будет работать как в среде Linux, так и в среде Windows.Однако, если бы мне пришлось выбирать, я бы пошел на Linux.
РЕДАКТИРОВАТЬ: Я также могу подтвердить, что клавиша Alt "нажата".Что за странное поведение?