gpt4 book ai didi

java - keyReleases 在 Linux 中模拟 keyPresses (java Swing GUI)

转载 作者:IT王子 更新时间:2023-10-29 00:32:07 24 4
gpt4 key购买 nike

我有一个正在开发的信息亭 GUI 应用程序,它要求我阻止用户使用 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 键外,一切正常。我的 GUI 上的按钮不断循环,我能够打开一个终端(我在测试期间在应用程序中设置了一个后门以防发生这种情况)这不会让我输入任何内容,因为 Tab 列出了当前目录。

谁能告诉我是否有在 Linux 和 Windows 环境中都适用的修复程序。但是,如果我必须选择,我会选择 Linux。

编辑:我还可以确认正在“按下”Alt 键。这种奇怪的行为是怎么回事?

最佳答案

忘记用这样的 hacks 捕获 Alt+Tab。这是一个糟糕的黑客攻击,而且容易出错。还有很多其他热键组合。

对于 linux 你有两个选择:

  1. 使用最少的窗口管理器或根本不使用窗口管理器。例如,使用 fluxbox您可以一起删除所有键绑定(bind),也可以让您的应用程序默认最大化,等等。您可以清空桌面菜单,这样即使您的应用程序崩溃,用户也无法控制。这是一个干净的解决方案,真正解决了您的问题,而不是它的某些部分。除了 Alt+Tab 之外,还有很多方法可以摆弄系统。

  2. 完全掌握输入控件。这就是游戏的作用。例如,libSDL 会为您完成,并且还有用于该功能的 java 包装器。这也应该按预期工作,除非您使用的窗口管理器默认情况下不允许抓取输入控件(我不知道)。

关于java - keyReleases 在 Linux 中模拟 keyPresses (java Swing GUI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com