【问题标题】:Java Robot click side buttonJava Robot 单击侧边按钮
【发布时间】:2019-04-02 15:41:49
【问题描述】:

我想用Robot点击鼠标按键4,侧键。

InputEvent 只有 3 个标准的左、中(滚动)和右按钮。

InputEvent.BUTTON1_DOWN_MASK = 1024
InputEvent.BUTTON2_DOWN_MASK = 2048
InputEvent.BUTTON3_DOWN_MASK = 4096

所以我尝试将公式流向Robot 号码8192

public static void main(String[] args)
{
    try
    {
        Robot mouseHandler = new Robot();

        mouseHandler.mousePress(8192);
        mouseHandler.mouseRelease(8192);
    } catch (AWTException e)
    {
        e.printStackTrace();
    }
}

但它没有工作(如预期)并引发异常:

Exception in thread "main" java.lang.IllegalArgumentException: Invalid combination of button flags
    at java.awt.Robot.checkButtonsArgument(Robot.java:320)
    at java.awt.Robot.mousePress(Robot.java:256)
    at controller_client.MainClass.main(MainClass.java:30)

是否可以使用按钮 4 创建鼠标点击?

【问题讨论】:

  • 我认为您可能必须使用 JNA 或 JNI 来解决此问题
  • 我还想知道您的问题是否不仅是特定于操作系统的,而且是特定于 vendor 的,因为我不知道是否处理了额外且可能不寻常的鼠标大多数常见的操作系统已经完全解决了按钮问题。
  • 我使用的是 Windows 10,我很确定它已得到解决,因为我在 JFrame 中使用了 MouseEvent 来查看它是否检测到 button4 和 button5,它确实打印了数字 4和 5 当我按下它们时。
  • 好的,那么您应该能够在 MouseListener 中的 MouseEvent 上调用 getModifiersEx() 以获取此事件的扩展修饰符掩码。执行此操作时,返回什么 int 值?
  • 哇 好的,这就是结果:button1 (Left) = 1,024button2 (Scroll) = 2,048button3 (Right) = 4,096button4 (forwards) = 16,384button5 (backwards) = 32,768 我确实尝试过它并且它有效,谢谢:)。我想检查更多按钮,但我的鼠标上只有这些按钮。我尝试发送数字65,536131,072,但它抛出了IllegalArgumentException,可能是因为我的鼠标上没有这些按钮。如果有人有更多按钮的鼠标,例如g502,如果您能检测到更多按钮,请在此处评论。

标签: java mouseevent


【解决方案1】:

好的,所以在搜索了更多之后,我发现了这个函数,它返回从 1 到 20 MouseEvent.getMaskForButton(int button) 的任何鼠标按钮掩码。

在尝试之后,Robot 类确实设法单击了 button4 和 button5,侧边按钮,如下所示:

try
{
    Robot mouseHandler = new Robot();

    int mouseButtonNum = 4; // 1 - 20
                            // but only buttons from 1 to 5 did work with Robot

    mouseHandler.mousePress(MouseEvent.getMaskForButton(mouseButtonNum));
    mouseHandler.mouseRelease(MouseEvent.getMaskForButton(mouseButtonNum));
} catch (AWTException e)
{
    e.printStackTrace();
}

我使用了一个带有 3 个按钮的鼠标,Robot 确实成功地单击了 4 个和 5 个按钮。但是好像Robot只能点击1到5的按钮,所以 大概Hovercraft Full Of Eels的解释是正确的:

我还想知道您的问题是否不仅是特定于操作系统的,而且是特定于供应商的,因为我不知道大多数常见操作系统是否已经完全解决了处理额外的和可能不寻常的鼠标按钮的问题。

如果他做对了,那么我使用的操作系统是 Windows 10。如果有人有 Linux 并且他知道如何将更多鼠标按钮寻址到 Linux 并试图使 Robot 单击鼠标按钮高于 5 所以请请注意我是否有效。

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 2019-06-25
    • 2015-06-06
    • 2014-07-22
    • 2022-07-18
    • 1970-01-01
    • 2021-11-24
    • 2013-05-07
    • 1970-01-01
    相关资源
    最近更新 更多