我想使用机器人点击鼠标按钮 4,侧边按钮。
InputEvent
只有 3 个标准的左、中(滚动)和右按钮。
InputEvent.BUTTON1_DOWN_MASK = 1024
InputEvent.BUTTON2_DOWN_MASK = 2048
InputEvent.BUTTON3_DOWN_MASK = 4096
所以我尝试运行公式并将数字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 到 20 之间的任何鼠标按钮掩码 MouseEvent.getMaskForButton(int button)
。
尝试后,Robot
类确实成功单击了按钮4和按钮5,侧边按钮,如下所示:
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的解释正确的是:
I also have to wonder if your issue is not only OS-specific, but also vendor-specific, since I don't know if handling of extra and perhaps unusual mouse buttons has been fully addressed by most common OS's.
如果他做对了,那么我使用的操作系统是 Windows 10。如果有人拥有 Linux
,并且他知道如何将更多鼠标按钮分配给 Linux
,并尝试使Robot
单击 5 上方的鼠标按钮,请注意我是否有效。
关于Java机器人点击侧面按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436569/