Java Robot单击侧面按钮

时间:2019-03-30 23:29:29

标签: java mouseevent

我想使用机器人单击鼠标按钮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创建鼠标单击?

1 个答案:

答案 0 :(得分: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的解释可能是正确的:

  

我还想知道您的问题不仅是特定于操作系统的问题,还是特定于供应商的问题,因为我不知道大多数常见的操作系统是否已完全解决了处理多余甚至不寻常的鼠标按钮的问题。 >

如果他的操作正确,那么我使用的操作系统是Windows10。如果某人拥有Linux,并且他知道如何将更多的鼠标按钮定位到Linux,并试图使Robot单击高于5的鼠标按钮,所以请注意是否有效。