【问题标题】:Listening to key presses in Java without a UI component在没有 UI 组件的情况下用 Java 监听按键
【发布时间】:2014-07-15 02:36:36
【问题描述】:

我正在尝试编写可以最好地推测为脚本的脚本,可以多次单击浏览器上的按钮而不会停止。我可以使用 java.awt.Robot 类进行无限次按键操作,但我遇到的问题是编码正确的激活器/中断器;我不知道如何在不使用监听器的情况下让 Java 监听键盘命令(我想在按 F3 时启动/停止),如果我没记错的话,它又需要添加到 UI 组件中。我该怎么做呢?目前我有:

    public static void main(String[] args) throws Exception
    {
       final Robot robot = new Robot();
            robot.delay(10000);
            while (true)
            {
                robot.mousePress(InputEvent.BUTTON1_MASK);
                robot.delay(1000);
                robot.mouseRelease(InputEvent.BUTTON1_MASK);
            }
     }   

我意识到这在 Jython 或 Groovy 中可能非常简单,但我仍然很感兴趣。

【问题讨论】:

  • @JigarJoshi 他想挂键盘,而不是按键。他已经说过他可以很好地完成按键操作。
  • 这将解决您的问题:global hotkey listener

标签: java


【解决方案1】:

据我所知,在纯 Java 中无法做到这一点。由于键盘命令由操作系统处理,让 Java 执行此操作的唯一方法是编写一些低级 JNI。我已经通过在 C++ 中编写了一个 X 事件处理程序(对于基于 *nix 的操作系统)来完成类似的操作。由于 Java 中的关键事件是每个 GUI 组件的,因此无法在全球范围内执行此操作。当我编写 X 事件句柄时,我面临着处理一次只有一个应用程序可以获取密钥的限制的挑战。 (XGrabKey)。

【讨论】:

  • @kajacx 的评论应该可以满足您的需求。如您所见,最终使用基于 JNA 的实现进入操作系统层。
猜你喜欢
  • 2014-07-01
  • 2010-10-28
  • 2012-08-24
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
相关资源
最近更新 更多